Hash-bibliotheken voor C-programmeurs

Deze pagina bevat een verzameling bibliotheken die u helpen bij het programmeren in C. Bibliotheken hier zijn open source en worden gebruikt om u te helpen gegevens op te slaan, zonder dat u uw eigen gekoppelde lijst enz. Datastructuren hoeft te rollen.

uthash

Ontwikkeld door Troy D. Hanson, kan elke C-structuur worden opgeslagen in een hashtabel met behulp van uthash. Neem gewoon # op, neem "uthash.h" op en voeg vervolgens een UT_hash_handle toe aan de structuur en kies een of meer velden in uw structuur om als sleutel te fungeren. Gebruik vervolgens HASH_ADD_INT, HASH_FIND_INT en macro's om items op te slaan, op te halen of te verwijderen uit de hashtabel. Het maakt gebruik van int, string en binaire sleutels.

Judy

Judy is een C-bibliotheek die een spaarzame dynamische array implementeert. Judy-arrays worden eenvoudig verklaard met een lege wijzer en verbruiken alleen geheugen wanneer ze zijn gevuld. Ze kunnen groeien om desgewenst alle beschikbare geheugen te gebruiken. De belangrijkste voordelen van Judy zijn schaalbaarheid, hoge prestaties en geheugenefficiëntie. Het kan worden gebruikt voor dynamisch gerangschikte arrays, associatieve arrays of een eenvoudig te gebruiken interface die geen nabewerking vereist voor uitbreiding of krimp en kan veel gebruikelijke gegevensstructuren vervangen, zoals arrays, schaarse arrays, hashtabellen, B-bomen, binair bomen, lineaire lijsten, skiplists, andere sorteer- en zoekalgoritmen en telfuncties.

SGLIB

SGLIB is een afkorting voor Simple Generic Library en bestaat uit een enkel headerbestand sglib.h dat generieke implementatie biedt van de meest voorkomende algoritmen voor arrays, lijsten, gesorteerde lijsten en rood-zwarte bomen. De bibliotheek is generiek en definieert geen eigen gegevensstructuren. Het werkt eerder op bestaande, door de gebruiker gedefinieerde gegevensstructuren via een generieke interface. Het wijst ook geen geheugen toe of wijst het toe en is niet afhankelijk van een bepaald geheugenbeheer.

Alle algoritmen worden geïmplementeerd in de vorm van macro's die zijn geparametriseerd door het type gegevensstructuur en comparatorfunctie (of comparatormacro). Voor sommige algoritmen en datastructuren kunnen verschillende generieke parameters nodig zijn, zoals de naam van het 'volgende' veld voor gekoppelde lijsten.