Warum enthält die Standardbibliothek für C ++ keine Hashtabellenimplementierungen?

8

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?

    
tehman 30.07.2011, 03:27
quelle

1 Antwort

15

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.

    
Nicol Bolas 30.07.2011, 03:35
quelle

Tags und Links