Hash-Bibliotheken für C-Programmierer

Diese Seite enthält eine Sammlung von Bibliotheken, die Ihnen bei der Programmierung in C helfen. Die Bibliotheken hier sind Open Source und werden zum Speichern von Daten verwendet, ohne dass Sie Ihre eigenen Datenstrukturen für verknüpfte Listen usw. erstellen müssen.

Entwickelt von Troy D. Hanson, jede C-Struktur kann mit in einer Hash-Tabelle gespeichert werden Uthash. Fügen Sie einfach #include "uthash.h" hinzu, fügen Sie der Struktur ein UT_hash_handle hinzu und wählen Sie ein oder mehrere Felder in Ihrer Struktur aus, die als Schlüssel fungieren sollen. Verwenden Sie dann HASH_ADD_INT, HASH_FIND_INT und Makros, um Elemente in der Hash-Tabelle zu speichern, abzurufen oder zu löschen. Es werden Int-, String- und Binärschlüssel verwendet.

Judy ist eine C-Bibliothek, die ein spärliches dynamisches Array implementiert. Judy Arrays werden einfach mit einer Null deklariert Zeiger und verbrauchen Speicher nur, wenn gefüllt. Falls gewünscht, können sie wachsen, um den gesamten verfügbaren Speicher zu nutzen. Die Hauptvorteile von Judy sind Skalierbarkeit, hohe Leistung und Speichereffizienz. Es kann für dynamisch dimensionierte Arrays, assoziative Arrays oder eine einfach zu verwendende Schnittstelle verwendet werden, die keine Nacharbeit für Expansion oder Kontraktion erfordert und viele ersetzen kann gängige Datenstrukturen wie Arrays, Sparse-Arrays, Hash-Tabellen, B-Bäume, Binärbäume, lineare Listen, Skiplists, andere Sortier- und Suchalgorithmen und Zählen Funktionen.

instagram viewer

SGLIB ist die Abkürzung für Simple Generic Library und besteht aus einer einzelnen Header-Datei sglib.h, die eine generische Implementierung der gängigsten Algorithmen für Arrays, Listen, sortierte Listen und rot-schwarze Bäume bietet. Die Bibliothek ist generisch und definiert keine eigenen Datenstrukturen. Vielmehr wirkt es über eine generische Schnittstelle auf vorhandene benutzerdefinierte Datenstrukturen ein. Es reserviert oder gibt auch keinen Speicher frei und hängt nicht von einer bestimmten Speicherverwaltung ab.

Alle Algorithmen sind in Form von Makros implementiert, die durch die Art der Datenstruktur und die Komparatorfunktion (oder das Komparatormakro) parametrisiert sind. Für einige Algorithmen und Datenstrukturen sind möglicherweise mehrere weitere generische Parameter erforderlich, z. B. der Name des Felds "Weiter" für verknüpfte Listen.