Partager via


CAtlMap::CAtlMap

 

Constructeur.

Syntaxe

      CAtlMap(
   UINT nBins = 17,
   float fOptimalLoad = 0.75f,
   float fLoThreshold = 0.25f,
   float fHiThreshold = 2.25f,
   UINT nBlockSize = 10 
) throw ( );

Paramètres

  • nBins
    Le nombre de coffres fournissant des pointeurs vers les éléments stockés.Consultez les notes plus loin dans cette rubrique pour obtenir une explication des coffres.

  • fOptimalLoad
    Le taux optimal de charge.

  • fLoThreshold
    Le seuil inférieur pour le taux de charge.

  • fHiThreshold
    Le seuil supérieur pour le taux de charge.

  • nBlockSize
    La taille des blocs.

Notes

CAtlMap référence tous ses éléments stockés en créant d'abord un index à l'aide d'un algorithme de hachage de la clé.Cet index référence un « \ » qui contient un pointeur vers les éléments stockés.Si le dossier bin est déjà en cours de utilisation, une liste liée est créée pour accéder aux éléments suivants.Parcourir une liste est plus lent que directement accéder à l'élément approprié, et donc la structure de mappage doit équilibrer les exigences en matière de stockage sur les performances.Les paramètres par défaut ont été sélectionnés pour donner de bons résultats dans la plupart des cas.

Le taux de charge est le rapport du nombre de coffres le nombre d'éléments stockés dans l'objet de mappage.Lorsque la structure de mappage est recalculée, la valeur du paramètre de fOptimalLoad sera utilisée pour calculer le nombre de coffres requis.Cette valeur peut être modifiée à l'aide de la méthode de CAtlMap::SetOptimalLoad .

Le paramètre d' fLoThreshold est la valeur plus faible que le taux de charge peut atteindre avant qu' CAtlMap recalcule la taille optimales du mappage.

Le paramètre d' fHiThreshold est la valeur supérieure à le taux de charge peut atteindre avant que l'objet d' CAtlMap recalcule la taille optimales du mappage.

Ce processus de recalcul (appelé le nouveau hachage) est activé par défaut.Si vous souhaitez désactiver ce processus, peut-être en faisant glisser un volume de données en même temps, appelez la méthode de CAtlMap::DisableAutoRehash .Réactivez-le avec la méthode de CAtlMap::EnableAutoRehash .

Le paramètre d' nBlockSize est une mesure de la quantité de mémoire allouée lorsqu'un nouvel élément est obligatoire.De plus grande taille des blocs ramènent des appels aux routines d'allocation de mémoire, mais utilisent plus de ressources.

Avant que les données puissent être stockées, il est nécessaire d'initialiser la table de hachage avec un appel à CAtlMap::InitHashTable.

// Create a map which stores a double
// value using an integer key

CAtlMap<int, double> mySinTable;
int i;

// Initialize the Hash Table
mySinTable.InitHashTable(257);

// Add items to the map
for (i = 0; i < 90; i++)
   mySinTable[i] = sin((double)i);

// Confirm the map is valid
mySinTable.AssertValid();

// Confirm the number of elements in the map
ATLASSERT(mySinTable.GetCount() == 90);

// Remove elements with even key values
for (i = 0; i < 90; i += 2)
   mySinTable.RemoveKey(i);

// Confirm the number of elements in the map
ATLASSERT(mySinTable.GetCount() == 45);

// Walk through all the elements in the map.
// First, get start position.
POSITION pos;
int key;
double value;
pos = mySinTable.GetStartPosition();

// Now iterate the map, element by element
while (pos != NULL) 
{
   key = mySinTable.GetKeyAt(pos);
   value = mySinTable.GetNextValue(pos);
}

Configuration requise

Header: atlcoll.h

Voir aussi

CAtlMap Class
CAtlMap::~CAtlMap