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