CAtlMap::CAtlMap
el constructor.
Sintaxis
CAtlMap(
UINT nBins = 17,
float fOptimalLoad = 0.75f,
float fLoThreshold = 0.25f,
float fHiThreshold = 2.25f,
UINT nBlockSize = 10
) throw ( );
Parámetros
nBins
El número de bandejas que proporcionan a punteros a los elementos almacenados.Vea las notas más adelante en este tema para obtener una explicación de bandejas.fOptimalLoad
La proporción óptima de carga.fLoThreshold
El umbral inferior de la relación de la carga.fHiThreshold
El umbral máximo para la proporción de carga.nBlockSize
el tamaño de bloque.
Comentarios
CAtlMap hace referencia a todos los elementos almacenados se crea un índice mediante un algoritmo hash de la clave.Este índice hace referencia a “bin” que contiene un puntero a los elementos almacenados.Si bin ya está en uso, una vincular- lista se crean para tener acceso a los elementos siguientes.Recorrer una lista es más lento que tener acceso directamente al elemento correcto, por lo que la estructura del mapa debe equilibrar los requisitos de almacenamiento de rendimiento.Los parámetros predeterminados se han elegidos dar buenos resultados en la mayoría de los casos.
La proporción de carga es la proporción de número de bandejas el número de elementos almacenados en el objeto de asignación.Cuando se actualiza la estructura del mapa, el valor de parámetro de fOptimalLoad se utilizará para calcular el número de bandejas necesarias.Este valor se puede cambiar mediante el método de CAtlMap::SetOptimalLoad .
El parámetro de fLoThreshold es el valor más bajo que la proporción de carga puede lograr antes de que CAtlMap actualice el tamaño óptimo del mapa.
El parámetro de fHiThreshold es el valor superior que la proporción de carga puede lograr antes de que el objeto de CAtlMap actualice el tamaño óptimo del mapa.
Este proceso de cálculo (conocido como rehashing) está habilitada de forma predeterminada.Si desea deshabilitar este proceso, quizás para proteger muchos datos al mismo tiempo, llame al método de CAtlMap::DisableAutoRehash .Reactívelo con el método de CAtlMap::EnableAutoRehash .
El parámetro de nBlockSize es una medida de la cantidad de memoria asignada cuando se requiere un nuevo elemento.Tamaños de bloque mayores reducen llamadas a las rutinas de asignación de memoria, pero se utiliza más recursos.
Antes de que los datos puede almacenar, es necesario inicializar la tabla hash con una llamada a 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);
}
Requisitos
encabezado: atlcoll.h