Sdílet prostřednictvím


CAtlMap::CAtlMap

Konstruktor.

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

Parametry

  • nBins
    Číslo přihrádky poskytuje odkazy na prvky uložené.Naleznete v části Poznámky dále v tomto tématu Vysvětlení přihrádek.

  • fOptimalLoad
    Načítání optimální poměr.

  • fLoThreshold
    Dolní prahová hodnota pro poměr zatížení.

  • fHiThreshold
    Horní prahová hodnota pro poměr zatížení.

  • nBlockSize
    Velikost bloku.

Poznámky

CAtlMapodkazuje na všechny její prvky uložené vytvoření indexu klíče pomocí algoritmu hash.Tento index odkazuje na "přihrádky", která obsahuje ukazatel na uložené prvky.Pokud přihrádky je již používán, propojený seznam vytvořen přístup další prvky.Procházení seznamu je pomalejší než přímý přístup k správný prvek a tak mapy struktury potřebuje proti výkonu požadavky na úložiště.Ve většině případů dává dobré výsledky byly zvolili výchozí parametry.

Poměr zatížení je poměr počtu přihrádek, počet prvků, které jsou uloženy v objektu mapy.Při přepočtu mapy struktury fOptimalLoad vypočítat počet požadovaných přihrádek bude použita hodnota parametru.Tuto hodnotu lze změnit pomocí CAtlMap::SetOptimalLoad metoda.

fLoThreshold Parametr je nižší hodnota, poměr zatížení lze dosáhnout před CAtlMap přepočítá optimální velikost mapy.

fHiThreshold Parametr je poměr zatížení lze dosáhnout před horní hodnota CAtlMap objektu přepočítá optimální velikost mapy.

Tento proces přepočet (známé jako rehashing) je ve výchozím nastavení povolena.Pokud chcete zakázat tento proces možná při zadávání velké množství dat v jednom okamžiku volání CAtlMap::DisableAutoRehash metoda.Opětovná aktivace s CAtlMap::EnableAutoRehash metoda.

nBlockSize Parametr je míra množství paměti přidělené v případě, že je požadován nový prvek.Větší velikosti bloku snížit volání rutiny přidělení paměti, ale použít více prostředků.

Než data mohou být uloženy, je třeba inicializovat tabulky hash s voláním CAtlMap::InitHashTable.

Příklad

// 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);
}

Požadavky

Záhlaví: atlcoll.h

Viz také

Referenční dokumentace

Třída CAtlMap

CAtlMap:: ~ CAtlMap