Ist hash_map Teil der STL?

Lesezeit: 4 Minuten

Ist hash map Teil der STL
Jake

Kurze Frage … Ist hash_map Teil der STL?

  • Keine Verwendung unordered_map. Brauchen Sie wirklich eine Hash-Map? Wenn nicht, sehen Sie, ob std::map Ihren tatsächlichen Anforderungen entspricht.

    – Martin York

    6. Mai 11 um 8:17 Uhr

  • @ Martin: hash_map ist Teil der STL.

    – Alexander C.

    6. Mai 11 um 8:21 Uhr

  • Bitte STL definieren. Meinst du die C++-Standardbibliothek? Oder meinen Sie die ursprüngliche Standard Template Library, die vor vielen Jahren veröffentlicht wurde und später teilweise als aktueller C++-Standard übernommen wurde? Normalerweise ist es uns egal, ob Sie STL informell als stdlib verwenden, aber in diesem Fall ist es wichtig. Standard-C++ hat nicht hash_map, STL tut. (Future C++ und Boost haben unordered_mapeine Hashmap.)

    – GManNickG

    6. Mai 11 um 8:28 Uhr

Ist hash map Teil der STL
Leichtigkeitsrennen im Orbit

Die STL hat hash_mapsondern die C++-Standardbibliothek nicht.

Aufgrund eines weit verbreiteten Missverständnisses können Sie die C++-Standardbibliothek als „die STL“ oder Teile der Implementierung der C++-Standardbibliothek in Ihrer Toolchain als „eine STL-Implementierung“ betrachten.

Es ist nicht.

Es ist auch eine große Schande, dass sowohl MSVC++ als auch GCC (die implementieren hash_map als Compiler-spezifische Erweiterung), legen Sie es in die std Namensraum, was nicht nur höchst irreführend, sondern laut Standard auch illegal ist. *Seufzen*

C++11 eingeführt hat std::unordered_mapwas nicht unähnlich ist.

1643913608 671 Ist hash map Teil der STL
Razlebe

Zitat von Wikipedia (Hervorhebung hinzugefügt):

Von dem STL Seite:

Die Standard Template Library (STL) ist eine Softwarebibliothek teilweise in der C++-Standardbibliothek enthalten.

…und dann von der hash_map Seite

In der Programmiersprache C++
hash_map ist der Name eines gehashten assoziativen Containers in der Standardvorlagenbibliothek. Es wird von mehreren Implementierern bereitgestellt, wie z. B. dem GNU C++-Compiler und Microsofts Visual C++. Es ist nicht Teil der C++-Standardbibliothekaber der C++ Technical Report 1 enthält den sehr ähnlichen Container unordered_mapdie im kommenden C++0x-Standard enthalten sein wird.

Also kurz gesagt,

  • JA es ist Teil der STL.
  • Aber es ist nicht Teil der Standardbibliothek.
  • Es wird jedoch von mehreren sehr beliebten Implementierungen unterstützt.

  • @razlebe: du konntest nicht einfach ja oder nein sagen?

    – fürsvarir

    6. Mai 11 um 8:13 Uhr


  • @forsvarir: Natürlich, aber das Zitieren von Wikipedia verleiht meiner Antwort eine gewisse Glaubwürdigkeit. 😉

    – Razlebe

    6. Mai 11 um 8:14 Uhr

  • Wichtig, da Sie wissen, dass es nur mäßig portierbar ist, sollten Sie, wenn Sie es trotzdem verwenden möchten, Ihre Compiler-Dokumentation überprüfen, um herauszufinden, in welchem ​​​​Header und Namensraum es sich befindet – es ist wahrscheinlich nicht einfach #include <hash_map> / std::hash_map<a, b> xobwohl es nicht viel schwerer sein wird….

    – Toni Delroy

    6. Mai 11 um 8:14 Uhr

  • @forsvarir: hier ist es schwierig. Die Frage von OP muss mit “Ja” beantwortet werden, aber die beabsichtigte Frage von OP sollte mit “Nein” beantwortet werden …

    – Alexander C.

    6. Mai 11 um 8:27 Uhr

  • @Alexandre C.: Tut mir leid, leichtes Arbeitsgeplänkel (ich arbeite mit razelbe) … es kann manchmal schwierig sein, eine klare Antwort aus ihm herauszuholen 🙂

    – fürsvarir

    6. Mai 11 um 8:32 Uhr

Das Problem ist, dass es keine vereinbarte Bedeutung für den Begriff gibt STL. Ist hash_map Teil von Standard-C++? Nein, ist es nicht. unordered_map wird jedoch Teil des neuen C++-Standards sein und ist eine mit Hashing implementierte Karte.

  • Und wenn Ihre Definition von STL enthält einige der leicht verfügbaren Implementierungen, dann könnte es enthalten hash_map.

    – James Kanze

    6. Mai 11 um 8:29 Uhr

  • Dort ist eine vereinbarte Bedeutung. Es ist nur so, dass einige Leute damit nicht einverstanden sind.

    – Leichtigkeitsrennen im Orbit

    6. Mai ’11 um 8:40 Uhr

  • @Tomalak Wenn einige Leute damit nicht einverstanden sind, dann ist es nicht vereinbart.

    – James Kanze

    6. Mai 11 um 8:54 Uhr

  • @James: Bitte gehen Sie zurück und lesen Sie meinen Kommentar noch einmal, als wäre er von einem riesigen Smiley umgeben.

    – Leichtigkeitsrennen im Orbit

    6. Mai 11 um 8:57 Uhr

1643913609 851 Ist hash map Teil der STL
Alexandre C.

ja, hash_map ist Teil von STL. Wie auch immer es ist nicht Teil der Standardbibliothek von C++03.

hash_map ist ein Teil von STL, aber kein Teil von Standard C++ (C++11). Und es gibt eine ähnliche Implementierung von hash_map namens “std::unordered_map” in Standard-C++:
http://www.cplusplus.com/reference/unordered_map/unordered_map/

Derzeit haben GNU C++ und MSVC++ hash_map für die Compilererweiterung sowie Boost implementiert. Inzwischen hat SGI eine eigene Implementierung für hash_map. Sie können sich darauf beziehen http://www.sgi.com/tech/stl/hash_map.html für Details.

Ist hash map Teil der STL
Raghuram

Nein … Hash_map ist nicht Teil des STL-Standards.

.

758770cookie-checkIst hash_map Teil der STL?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy