2009-08-01 14 views
1

Gibt es eine C-Bibliotheksversion von C++ std :: map in einer Standardbibliothek?C-Version von C++ std :: map

+0

Haben Sie * müssen * C zu benutzen? – GManNickG

+0

@GMan - Was ist los mit C? –

+8

Es hat keine Karte. –

Antwort

3

std::map ist keine Hash-Tabelle. Daher mein Vorschlag: Red-Black Tree C Code

Die folgenden C-Dateien implementieren ausgewogene binäre Bäume mit dem Rot-Schwarz-Paradigma. Ich habe diese Funktionen sehr allgemein geschrieben, so dass der Schlüssel überhaupt etwas sein kann. Jeder Knoten des ausgeglichenen Binärbaums muss einen Schlüssel und einen Zeiger auf Informationen enthalten. Der Benutzer definiert den Datentyp des Schlüssels und stellt eine Vergleichsfunktion für die Schlüssel bereit. Die Info kann auch ein beliebiger Datentyp sein.

(Haftungsausschluss: habe es selbst nicht ausprobiert.)

1

In die Standardbibliothek ist nichts eingebaut, aber uthash erfüllt möglicherweise Ihre Anforderungen.

3

Die C-Standardbibliothek unterstützt ein solches Äquivalent nicht. Eine häufig verwendete C-Bibliothek ist jedoch GLib aus dem GNOME-Projekt. Insbesondere könnte das GLib Hash Tables was Sie suchen.

+0

Hat sich die Frage geändert, oder hast du einfach nur geblättert, um nicht zu glauben, dass irgendjemand eigentlich einen Baum und nicht einen Hash hätte? ;-) Der GLib Baum ist hier: http://library.gnome.org/devel/glib/stable/glib-Balanced-Binary-Trees.html –