Поделиться через


CAtlMap::CAtlMap

Конструктор.

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

Параметры

  • nBins
    Количество позиций реализация указатели сохраненные элементы. См. "Примечания" далее в этом разделе для объяснения позиций.

  • fOptimalLoad
    Оптимальный коэффициент загрузки.

  • fLoThreshold
    Нижний порог для коэффициента загрузки.

  • fHiThreshold
    Верхний порог для коэффициента загрузки.

  • nBlockSize
    Размер блока.

Заметки

CAtlMap ссылается на все сохраненные элементов сначала создать индекс, используя алгоритм хэширования для ключа. Этот индекс ссылается на "положение", которая содержит указатель на сохраненные элементы. Если позиция уже используется, то связать- список создать для доступа к последующие элементы. Обход списка медленнее, чем непосредственный доступ правильный элемент, и поэтому структуре сопоставления для распределения памяти требования к производительности. По умолчанию параметры были выбратьы для предоставления хорошие результаты в большинстве случаев.

Коэффициент загрузки отношение числа позиций на количество элементов, хранящихся в объекте сопоставления. Если структура будет повторное сопоставление пересчитываются, значение параметра fOptimalLoad будет использовано для вычисления необходимое число позиций. Это значение можно изменить с помощью метода CAtlMap::SetOptimalLoad.

Параметр fLoThreshold более низкое значение, коэффициент загрузки может достичь, прежде чем CAtlMap рассчитает вновь оптимальный размер сопоставления.

Параметр fHiThreshold высокое значение, коэффициент загрузки может достичь, прежде чем объект CAtlMap рассчитает вновь оптимальный размер сопоставления.

Этот процесс пересчета (известный как повторного хэширования) включен по умолчанию. Если требуется отключить этот процесс, то возможно при вводе много данные одновременно, вызовите метод CAtlMap::DisableAutoRehash. Повторная активация с методом CAtlMap::EnableAutoRehash.

Параметр nBlockSize мера выбранного объема памяти, когда новый элемент является обязательным. Большие размеры блоков уменьшают вызовы подпрограммам выделения памяти, но потребляют больше ресурсов.

Прежде чем какие-либо данные могут быть сохраненными, необходимо инициализировать хэш-таблицы с вызовом 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);
}

Требования

Header: atlcoll.h

См. также

Ссылки

CAtlMap Class

CAtlMap::~CAtlMap