CRBMultiMap (clase)
Esta clase representa una estructura de asignación que permite que cada clave se pueda asociar a más de un valor mediante un árbol binario Red-Black.
Sintaxis
template<typename K,
typename V,
class KTraits = CElementTraits<K>,
class VTraits = CElementTraits<V>>
class CRBMultiMap : public CRBTree<K, V, KTraits, VTraits>
Parámetros
K
Tipo de elemento clave.
V
Tipo de elemento de valor.
KTraits
Código usado para copiar o mover elementos de clave. Consulte CElementTraits (clase) para más información.
VTraits
Código usado para copiar o mover elementos de valor.
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CRBMultiMap::CRBMultiMap | Constructor . |
CRBMultiMap::~CRBMultiMap | El destructor . |
Métodos públicos
Nombre | Descripción |
---|---|
CRBMultiMap::FindFirstWithKey | Llame a este método para buscar la posición del primer elemento con una clave determinada. |
CRBMultiMap::GetNextValueWithKey | Llame a este método para obtener el valor asociado a una clave determinada y actualizar el valor de posición. |
CRBMultiMap::GetNextWithKey | Llame a este método para obtener el elemento asociado a una clave determinada y actualizar el valor de posición. |
CRBMultiMap::Insert | Llame a este método para insertar un par de elementos en el mapa. |
CRBMultiMap::RemoveKey | Llame a este método para quitar todos los elementos clave-valor de una clave determinada. |
Comentarios
CRBMultiMap
proporciona compatibilidad con una matriz de asignación de cualquier tipo determinado, y administra una matriz ordenada de valores y elementos de clave. A diferencia de la clase CRBMap, cada clave se puede asociar a más de un valor.
Los elementos (que constan de una clave y un valor) se almacenan en una estructura de árbol binario mediante el método CRBMultiMap::Insert. Los elementos se pueden quitar mediante el método CRBMultiMap::RemoveKey, que elimina todos los elementos que coinciden con la clave especificada.
Recorrer el árbol es posible con métodos como CRBTree::GetHeadPosition, CRBTree::GetNext y CRBTree::GetNextValue. El acceso a los valores potencialmente múltiples por clave es posible mediante los métodos CRBMultiMap::FindFirstWithKey, CRBMultiMap::GetNextValueWithKey y CRBMultiMap::GetNextWithKey. Consulte el ejemplo de CRBMultiMap::CRBMultiMap para ver una ilustración de este escenario en la práctica.
Los parámetros KTraits y VTraits son clases de rasgos que contienen cualquier código complementario necesario para copiar o mover elementos.
CRBMultiMap
se deriva de CRBTree, que implementa un árbol binario mediante el algoritmo Red-Black. La clase CRBMultiMap
CAtlMapCRBMap
ofrece una alternativa a y . Cuando solo es necesario almacenar un pequeño número de elementos, considere la posibilidad de usar la clase CSimpleMap en su lugar.
Para obtener una explicación más completa de las distintas clases de colección y sus características y características de rendimiento, consulte Clases de colección de ATL.
Jerarquía de herencia
CRBMultiMap
Requisitos
Encabezado: atlcoll.h
CRBMultiMap::CRBMultiMap
Constructor .
explicit CRBMultiMap(size_t nBlockSize = 10) throw();
Parámetros
nBlockSize
Tamaño del bloque.
Comentarios
El parámetro nBlockSize es una medida de la cantidad de memoria asignada cuando se requiere un nuevo elemento. Los tamaños de bloque más grandes reducen las llamadas a rutinas de asignación de memoria, pero usan más recursos. El valor predeterminado asignará espacio para 10 elementos a la vez.
Consulte la documentación de la clase base CRBTree para información sobre los demás métodos disponibles.
Ejemplo
// Define a multimap object which has an integer
// key, a double value, and a block size of 5
CRBMultiMap<int, double> myMap(5);
// Add some key/values. Notice how three
// different values are associated with
// one key. In a CRBMap object, the values
// would simply overwrite each other.
myMap.Insert(0, 1.1);
myMap.Insert(0, 1.2);
myMap.Insert(0, 1.3);
myMap.Insert(1, 2.1);
// Look up a key and iterate through
// all associated values
double v;
POSITION myPos = myMap.FindFirstWithKey(0);
while (myPos != NULL)
{
v = myMap.GetNextValueWithKey(myPos,0);
// As the loop iterates, v
// contains the values 1.3, 1.2, 1.1
}
// Remove all of the values associated with that key
size_t i = myMap.RemoveKey(0);
// Confirm all three values were deleted
ATLASSERT(i == 3);
CRBMultiMap::~CRBMultiMap
El destructor .
~CRBMultiMap() throw();
Comentarios
Libera los recursos asignados.
Consulte la documentación de la clase base CRBTree para información sobre los demás métodos disponibles.
CRBMultiMap::FindFirstWithKey
Llame a este método para buscar la posición del primer elemento con una clave determinada.
POSITION FindFirstWithKey(KINARGTYPE key) const throw();
Parámetros
key
Especifica la clave que identifica el elemento que se va a buscar.
Valor devuelto
Devuelve la posición del primer elemento clave-valor si se encuentra la clave; de lo contrario, devuelve NULL.
Comentarios
Una clave de CRBMultiMap
puede tener uno o varios valores asociados. Este método proporcionará el valor de posición del primer valor (que puede, de hecho, ser el único valor) asociado a esa clave determinada. A continuación, el valor de posición devuelto se puede usar con CRBMultiMap::GetNextValueWithKey o CRBMultiMap::GetNextWithKey para obtener el valor y actualizar la posición.
Consulte la documentación de la clase base CRBTree para información sobre los demás métodos disponibles.
Ejemplo
Vea el ejemplo de CRBMultiMap::CRBMultiMap.
CRBMultiMap::GetNextValueWithKey
Llame a este método para obtener el valor asociado a una clave determinada y actualizar el valor de posición.
const V& GetNextValueWithKey(
POSITION& pos,
KINARGTYPE key) const throw();
V& GetNextValueWithKey(
POSITION& pos,
KINARGTYPE key) throw();
Parámetros
pos
Valor de posición, obtenido con una llamada a CRBMultiMap::FindFirstWithKey o CRBMultiMap::GetNextWithKey, o una llamada anterior a GetNextValueWithKey
.
key
Especifica la clave que identifica el elemento que se va a buscar.
Valor devuelto
Devuelve el par de elementos asociado a la clave especificada.
Comentarios
El valor de posición se actualiza para que apunte al siguiente valor asociado a la clave. Si no existen más valores, el valor de posición se establece en NULL.
Consulte la documentación de la clase base CRBTree para información sobre los demás métodos disponibles.
Ejemplo
Vea el ejemplo de CRBMultiMap::CRBMultiMap.
CRBMultiMap::GetNextWithKey
Llame a este método para obtener el elemento asociado a una clave determinada y actualizar el valor de posición.
const CPair* GetNextWithKey(
POSITION& pos,
KINARGTYPE key) const throw();
CPair* GetNextWithKey(
POSITION& pos,
KINARGTYPE key) throw();
Parámetros
pos
Valor de posición, obtenido con una llamada a CRBMultiMap::FindFirstWithKey o CRBMultiMap::GetNextValueWithKey, o una llamada anterior a GetNextWithKey
.
key
Especifica la clave que identifica el elemento que se va a buscar.
Valor devuelto
Devuelve el siguiente elemento CRBTree::CPair Class asociado a la clave especificada.
Comentarios
El valor de posición se actualiza para que apunte al siguiente valor asociado a la clave. Si no existen más valores, el valor de posición se establece en NULL.
Consulte la documentación de la clase base CRBTree para información sobre los demás métodos disponibles.
CRBMultiMap::Insert
Llame a este método para insertar un par de elementos en el mapa.
POSITION Insert(KINARGTYPE key, VINARGTYPE value) throw(...);
Parámetros
key
Valor de clave que se va a agregar al objeto CRBMultiMap
.
value
El valor que se debe agregar al objeto CRBMultiMap
, asociado a la clave key.
Valor devuelto
Devuelve la posición del par de elementos clave-valor del objeto CRBMultiMap
.
Comentarios
Consulte la documentación de la clase base CRBTree para información sobre los demás métodos disponibles.
Ejemplo
Vea el ejemplo de CRBMultiMap::CRBMultiMap.
CRBMultiMap::RemoveKey
Llame a este método para quitar todos los elementos clave-valor de una clave determinada.
size_t RemoveKey(KINARGTYPE key) throw();
Parámetros
key
Especifica la clave que identifica los elementos que se van a eliminar.
Valor devuelto
Devuelve el número de valores asociados a la clave especificada.
Comentarios
RemoveKey
elimina todos los elementos clave-valor que tienen una clave que coincide con el valor key.
Consulte la documentación de la clase base CRBTree para información sobre los demás métodos disponibles.
Ejemplo
Vea el ejemplo de CRBMultiMap::CRBMultiMap.
Consulte también
CRBTree (clase)
CAtlMap (clase)
CRBMap (clase)
Información general sobre la clase