Dictionary / HashTable Object en C ++?
Je suis à la recherche d'une table de hachage ou Dictionnaire de la mise en œuvre en C++, qui a des fonctionnalités similaires à celle en C#? La STL contenir un objet de ce genre et comment pourrais-je l'utiliser?
source d'informationauteur cam
Vous devez vous connecter pour publier un commentaire.
En fait, pour être exactement la même .NET Dictionnaire/table de hachage, ce que vous voulez est classes hash_map ou unordered_map (
std::map
est mis en œuvre comme un arbre binaire),hash_map
est une extension de la SC++L. la Plupart des compilateurs que je sais de venir avechash_map
bien que, et de stimuler les a évidemmentunordered_map
jusqu'à ce que le C++0x est disponible dans tous les compilateurs, de sorte que vous devriez juste être capable de l'utiliser sans difficulté.STL a
std::map
La STL
std::map
peut être utilisé pour construire un dictionnaire.std::map
est généralement mis en œuvre comme un arbre de recherche, pas une table de hachage. Qui signifie à la fois la recherche et de l'insertion a différentes caractéristiques de performance que de C#HashMap
- pour de très grandes cartes, moyenne de recherche sera plus lent, surtout si les objets dans la carte sont fragmentés dans la mémoire.En TR1 de la nouvelle norme c++, vous avez
std::tr1::unordered_map
etstd::tr1::unordered_multimap
ce qui sera généralement mis en œuvre à l'aide d'une table de hachage. Si votre compilateur ne fournit pas de ces bibliothèques, vous pouvez utiliser la mise en œuvre de http://www.boost.org/.Encore une autre alternative est de Google
sparse_hash
.Je crois que vous êtes à la recherche pour
map
. Voir ici pour plus d'.