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 que fornecem ponteiros para elementos armazenados.Comentários consulte posteriormente em este tópico para obter uma explicação de compartimentos.

  • fOptimalLoad
    A taxa ideal de carregamento.

  • fLoThreshold
    O limite inferior para a taxa de carregamento.

  • fHiThreshold
    O limite superior da taxa de carregamento.

  • nBlockSize
    O tamanho do bloco.

Comentários

CAtlMap referencia todos os seus elementos armazenados primeiro criando um índice usando um algoritmo de hash na chave.Este índice referencia um “bin” que contém um ponteiro para os elementos armazenados.Se o diretório bin já está em uso, listas vinculadas uma é criada para acessar elementos subseqüentes.Percorrer uma lista é mais lento do que diretamente acessar o elemento correto, e portanto a estrutura de mapa precisa equilibrar requisitos de armazenamento com o desempenho.Os parâmetros são escolhidos padrão para dar na maioria dos casos bons resultados.

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

O parâmetro de fLoThreshold é o menor valor que a taxa de carregamento pode alcançar antes que CAtlMap recalcular o tamanho otimizado de mapa.

O parâmetro de fHiThreshold é o valor maior que a taxa de carregamento pode alcançar antes que o objeto de CAtlMap recalcular o tamanho otimizado de mapa.

Este processo do novo cálculo (conhecido como repetir) é ativado por padrão.Se você desejar desativar esse processo, talvez ao inserir muitos dados ao mesmo tempo, chame o método de CAtlMap::DisableAutoRehash .Reativar o com o método de CAtlMap::EnableAutoRehash .

O parâmetro de nBlockSize é uma medida da quantidade de memória alocada quando um novo elemento for necessário.Os tamanhos de pacote maior reduzem chamadas a rotinas de alocação de memória, mas usam mais recursos.

Antes de todos os dados podem ser armazenados, é necessário inicializar o tabela de hash com uma chamada a 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 de CAtlMap

CAtlMap::~CAtlMap