Bibliothèques de hachage pour les programmeurs C

Cette page répertorie une collection de bibliothèques qui vous aideront dans la programmation en C. Les bibliothèques ici sont open source et utilisées pour vous aider à stocker des données, sans avoir à rouler votre propre liste chaînée, etc. structures de données.

uthash

Développée par Troy D. Hanson, toute structure C peut être stockée dans une table de hachage à l'aide d'uthash. Incluez simplement #include "uthash.h" puis ajoutez un UT_hash_handle à la structure et choisissez un ou plusieurs champs dans votre structure pour agir comme clé. Utilisez ensuite HASH_ADD_INT, HASH_FIND_INT et des macros pour stocker, récupérer ou supprimer des éléments de la table de hachage. Il utilise des clés int, string et binaires.

Judy

Judy est une bibliothèque C qui implémente un tableau dynamique clairsemé. Les tableaux Judy sont déclarés simplement avec un pointeur nul et consomment de la mémoire uniquement lorsqu'ils sont remplis. Ils peuvent évoluer pour utiliser toute la mémoire disponible si vous le souhaitez. Les principaux avantages de Judy sont l'évolutivité, les hautes performances et l'efficacité de la mémoire. Il peut être utilisé pour les tableaux de taille dynamique, les tableaux associatifs ou une interface simple à utiliser qui ne nécessite aucune retouche pour l'expansion ou la contraction et peut remplacer de nombreuses structures de données courantes, telles que les tableaux, les tableaux clairsemés, les tables de hachage, les arbres B, les binaires arbres, listes linéaires, skiplists, autres algorithmes de tri et de recherche et fonctions de comptage.

SGLIB

SGLIB est l'abréviation de Simple Generic Library et se compose d'un seul fichier d'en-tête sglib.h qui fournit une implémentation générique des algorithmes les plus courants pour les tableaux, les listes, les listes triées et les arbres rouge-noir. La bibliothèque est générique et ne définit pas ses propres structures de données. Il agit plutôt sur les structures de données définies par l'utilisateur existantes via une interface générique. Il n'alloue ni ne désalloue aucune mémoire et ne dépend d'aucune gestion de mémoire particulière..

Tous les algorithmes sont implémentés sous forme de macros paramétrées par le type de structure de données et la fonction de comparateur (ou macro de comparateur). Plusieurs autres paramètres génériques tels que le nom du champ «suivant» pour les listes chaînées peuvent être requis pour certains algorithmes et structures de données.