web-dev-qa-db-fra.com

Hash_map fait-il partie de la STL?

Question rapide ... hash_map fait-il partie de la STL?

57
Jake

La STL a hash_map , mais la bibliothèque standard C++ ne le fait pas .

En raison de ne idée fausse commune , vous pouvez considérer la bibliothèque standard C++ comme "le STL" ou des parties de la mise en oeuvre de votre chaîne d'outils de la bibliothèque standard C++ comme "une implémentation de STL".

Ce n'est pas.

Il est également dommage que MSVC++ et GCC (qui implémentent hash_map en tant qu'extension spécifique au compilateur), placez-le dans l'espace de noms std , ce qui est non seulement hautement trompeur, mais également illégal selon la norme. *soupir*

C++ 11 a introduit std::unordered_map , ce qui n’est pas différent.

Citant Wikipedia (italiques ajoutés):

De la page STL :

La bibliothèque de modèles standard (STL) est une bibliothèque de logiciels partiellement incluse dans la bibliothèque standard C++.

... et ensuite de la page hash_map

Dans le langage de programmation C++, hash_map est le nom d'un conteneur associatif haché dans la bibliothèque de modèles standard . Il est fourni par plusieurs implémenteurs, tels que le compilateur C++ GNU et le Visual C++ de Microsoft. . Il ne fait pas partie de la bibliothèque standard C++ , mais le rapport technique C++ 1 contient le conteneur très similaire unordered_map, qui sera inclus dans le prochain standard C++ 0x.

En bref,

  • [~ # ~] oui [~ # ~] cela fait partie de la STL.
  • Mais cela IS PAS fait partie de la bibliothèque standard.
  • Mais il est soutenu par plusieurs implémentations très populaires.
15
razlebe

Le problème est qu’il n’ya pas d’accord sur le sens du terme STL . Est hash_map partie de la norme C++? Non ce n'est pas. unordered_map fera cependant partie de la nouvelle norme C++ et constitue une carte mise en œuvre à l'aide du hachage.

7

Oui , hash_map fait partie de STL . Cependant, il fait pas une partie de la bibliothèque standard de C++ 03.

5
Alexandre C.

hash_map fait partie de STL, mais pas de Standard C++ (C++ 11). Et il existe une implémentation similaire de hash_map nommée "std :: unordered_map" en C++ standard: http://www.cplusplus.com/reference/unordered_map/unordered_map/

Actuellement, GNU C++ et MSVC++ ont implémenté hash_map pour l’extension du compilateur, ainsi que Boost. Entre-temps, SGI a sa propre implémentation pour hash_map. Vous pouvez vous référer à http: // www .sgi.com/tech/stl/hash_map.html pour plus de détails.

2
holybiner