Hash_map fait-il partie de la STL?

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

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

En raison d’ une idée fausse commune , vous pouvez considérer la bibliothèque standard C ++ comme “la STL”, ou des parties de votre implémentation de la bibliothèque standard C ++ en tant que “implémentation STL”. Ce n’est pas.

Il est également dommage que MSVC ++ et GCC (qui implémentent hash_map tant qu’extension spécifique au compilateur) le placent dans l’espace de noms std , ce qui est très trompeur. *soupir*

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

Citant Wikipedia (emphase ajoutée):

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 ++.

… puis 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 GNU C ++ et Visual C ++ de Microsoft. Il ne fait pas partie de la bibliothèque standard C ++ , mais le rapport technique C ++ 1 contient le conteneur unordered_map très similaire, qui sera inclus dans la prochaine norme C ++ 0x.

Donc bref,

  • OUI, cela fait partie de la STL.
  • Mais il ne fait pas partie de la bibliothèque standard.
  • Mais il est soutenu par plusieurs implémentations très populaires.

Le problème est qu’il n’ya pas de sens commun pour le terme STL . hash_map partie de la norme C ++? Non, ce n’est pas unordered_map fera partie du nouveau standard C ++, et est une carte implémentée en utilisant le hachage.

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

hash_map fait partie de STL, mais pas de C ++ standard (C ++ 11). Et il existe une implémentation similaire de hash_map nommée “std :: unordered_map” en standard C ++: 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. Pendant ce 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.

Non … Hash_map ne fait pas partie de la norme STL.