2014-09-20 4 views
0

Afin d'utiliser hash_map, je suppose qu'un bloc de mémoire consécutif sera alloué, mais quelle est la taille de ce bloc par défaut?Le coût en mémoire d'une structure hash_map en C++ STL

+2

Il s'agit probablement d'une implémentation spécifique. –

+0

@TonyD Un bon! –

+0

@TonyD Pourriez-vous ajouter votre réponse ci-dessous pour que je puisse l'accepter comme une réponse correcte? –

Répondre

0

Ce qui suit est pour unordered_map - le nom de la carte de hachage en C++ 11 partir ...

Bien que la taille initiale est mise en œuvre spécifique, la valeur par défaut est .max_load_factor() stipulé par la norme à 1.0, donc en général, le nombre de compartiments n'augmentera automatiquement que lorsque .size() deviendra plus grand. Vous donne une idée des choses ...

Vous pouvez également appeler le .bucket_count() pour obtenir le décompte instantané.

0

La taille de chaque bloc dépend de l'implémentation.

par exemple. votre déclaration de carte de hachage est: hash_map homier;

Ensuite, la taille de chaque bloc de hachage sera = (taille du compartiment de la chaîne) + (taille du compartiment de l'entier) selon l'architecture du système d'exploitation.