Frage

Ich habe kürzlich entdeckt, dass die Umsetzung der Hash-Karte in C ++ wird unordered_map aufgerufen werden.

Als ich aufblickte, warum sie waren einfach nicht hash_map verwenden, entdeckte ich, dass offenbar Kompatibilitätsprobleme bei der Umsetzung von hash_map gibt, die Entschlüsse (weitere Informationen unordered_map hier ).

Die Wiki-Seite gibt nicht viel mehr Informationen, damit ich mich gefragt, ob jemand einige der Probleme mit hash_map wußte, dass Entschlüsse unordered_map.

War es hilfreich?

Lösung

Da es keine Hash-Tabelle in der C ++ Standardbibliothek definiert war, verschiedene Implementierer der Standardbibliotheken würden eine Nicht-Standard-Hash-Tabelle häufig genannt hash_map bieten. Da diese Implementierungen wurden nach einem Standard nicht geschrieben sie alle feinen Unterschiede in Funktionalität und Leistung garantiert hatte.

Beginnend mit C 11 ++ eine Hash-Tabelle Implementierung wurde hinzugefügt die C ++ Standard-Bibliothek-Standard. Es wurde beschlossen, einen anderen Namen zu verwenden, um die Klasse Kollisionen zu verhindern, mit diesen Nicht-Standard-Implementierungen und eine versehentliche Verwendung der neuen Klasse zu verhindern, dass von den Entwicklern, die in ihrem Code hash_table hatte.

Der gewählte alternative Name ist unordered_map, die wirklich mehr beschreibend ist, wie es in der Klasse der Karte-Schnittstelle und die ungeordneten Natur ihrer Elemente hindeutet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top