Ich habe mein Textbuch Data Structures and Algorithms: By Mark Allen Weiss
gelesen und es heißt, dass die Standardbibliothek keine Hashtabellenimplementierungen eines Sets oder einer Map enthält, sondern Compiler hash_set und hash_map mit den gleichen Memberfunktionen der set- und map-Klasse versehen können . Warum nicht einfach Hash-Implementierungen in die Standardbibliothek aufnehmen? Das Buch wurde 2006 veröffentlicht, gab es irgendwelche Überarbeitungen von C ++ seit dem Hinzufügen dieser Implementierungen zur Standardbibliothek?
Was Sie suchen, heißt std::unordered_set/map
. Diese sind Teil von C ++ 11 , der nächsten Version des C ++ Standards (die in ein paar Monate). Sie wurden 2005 auch im technischen Bericht 1 veröffentlicht, der eine Liste von Ergänzungen der C ++ - Standardbibliothek zwischen dem ersten Standard und dem nächsten enthielt. In TR1 waren sie im Namensraum std::tr1
.
Boost liefert tatsächlich eine Implementierung von TR1 (obwohl Sie nicht sollten Verwenden Sie die std::tr1::shared_ptr
Version, da die regulären boost::shared_ptr
und std::shared_ptr
in C ++ 11 viel, viel besser sind).
Wenn ich mich erinnere, war der Grund, warum Hashtabellen ursprünglich nicht in C ++ 98 eingeführt wurden, einfach der Zeitmangel für das C ++ - Standardkomitee. Sie hatten grundsätzlich ein Stichtag, um das Ding zu versenden, und Hashtabellen haben es nicht geschafft.
Tags und Links c++ visual-c++ data-structures