Question rapide ... hash_map fait-il partie de la STL?
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 similaireunordered_map
, qui sera inclus dans le prochain standard C++ 0x.
En bref,
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.
Oui , hash_map
fait partie de STL . Cependant, il fait pas une partie de la bibliothèque standard de C++ 03.
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.