Partilhar via


CAtlMap::CAtlMap

O construtor.

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

Parâmetros

  • nBins
    O número de compartimentos fornecem ponteiros para os elementos armazenados.Consulte comentários mais adiante neste tópico para obter uma explicação das bandejas.

  • fOptimalLoad
    A taxa de carga ideal.

  • fLoThreshold
    O limite inferior para a taxa de carga.

  • fHiThreshold
    O limite superior para a taxa de carga.

  • nBlockSize
    O dimensionar do bloco.

Comentários

CAtlMap todos os seus elementos armazenados faz referência criando primeiro um índice usando um algoritmo de hash na chave. Esse índice faz referência a um "compartimento" que contém um ponteiro para os elementos armazenados.Se a bandeja já estiver em uso, uma lista vinculada é criada para acessar os elementos subseqüentes.Como percorrer uma lista é mais lento do que acessar diretamente o elemento correto e portanto, a estrutura do MAP precisa equilibrar os requisitos de armazenamento em relação a desempenho.Os parâmetros padrão foram escolhidos para dar mercadoria resultados na maioria dos casos.

A taxa de carga é a taxa do número de compartimentos para o número de elementos armazenado no objeto de MAP.Quando a estrutura do MAP é recalculada, a fOptimalLoad valor do parâmetro será usado para calcular o número de compartimentos necessários.Esse valor pode ser alterado usando o CAtlMap::SetOptimalLoad método.

The fLoThreshold parâmetro é o valor menor que a taxa de carga pode atingir antes CAtlMap recalculará o dimensionar ideal do MAP.

The fHiThreshold parâmetro é o valor superior a taxa de carga pode atingir antes da CAtlMap objeto recalculará o dimensionar ideal do MAP.

Esse processo de recálculo (conhecido sistema autônomo rehashing) é ativado por padrão.Se você desejar desabilitar esse processo, talvez ao inserir uma grande quantidade de dados ao mesmo tempo, telefonar o CAtlMap::DisableAutoRehash método.Reativá-lo com o CAtlMap::EnableAutoRehash método.

The nBlockSize parâmetro é uma medida da quantidade de memória alocada quando um novo elemento é necessário. Tamanhos maiores de bloco de reduzem as chamadas de rotinas de alocação de memória, mas usam mais recursos.

Antes que todos os dados podem ser armazenados, é necessário inicializar a tabela de hash com uma telefonar para CAtlMap::InitHashTable.

Exemplo

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

Requisitos

Cabeçalho: atlcoll.h

Consulte também

Referência

Classe CAtlMap

CAtlMap:: ~ CAtlMap

Outros recursos

CAtlMap membros