Partilhar via


Classe CRBMap

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe representa uma estrutura de mapeamento, usando uma árvore binária Red-Black.

Sintaxe

template <typename K,
          typename V,
          class KTraits = CElementTraits<K>,
          class VTraits = CElementTraits<V>>
class CRBMap : public CRBTree<K, V, KTraits, VTraits>

Parâmetros

K
O tipo de elemento-chave.

V
O tipo de elemento valor.

KTraits
O código usado para copiar ou mover elementos-chave. Consulte a Classe CElementTraits para mais detalhes.

VTraits
O código usado para copiar ou mover elementos de valor.

Membros

Construtores Públicos

Nome Description
CRBMap::CRBMap O construtor.
CRBMap::~CRBMap O destruidor.

Métodos Públicos

Nome Description
CRBMap::Pesquisa Chame este método para procurar chaves ou valores no CRBMap objeto.
CRBMap::RemoveKey Chame este método para remover um elemento do CRBMap objeto, dada a chave.
CRBMap::SetAt Chame este método para inserir um par de elementos no mapa.

Observações

CRBMap fornece suporte para um array de mapeamento de qualquer tipo, gerindo um array ordenado de elementos-chave e os seus valores associados. Cada chave pode ter apenas um valor associado. Os elementos (constituídos por uma chave e um valor) são armazenados numa estrutura de árvore binária, usando o método CRBMap::SetAt . Os elementos podem ser removidos usando o método CRBMap::RemoveKey , que elimina o elemento com o valor-chave dado.

A percorrência da árvore é possível graças a métodos como CRBTree::GetHeadPosition, CRBTree::GetNext e CRBTree::GetNextValue.

Os parâmetros KTraits e VTraits são classes de características que contêm qualquer código suplementar necessário para copiar ou mover elementos.

CRBMap é derivado de CRBTree, que implementa uma árvore binária usando o algoritmo Red-Black. CRBMultiMap é uma variação que permite múltiplos valores para cada chave. Também deriva de CRBTree, e assim partilha muitas características com CRBMap.

Uma alternativa a ambos CRBMap é CRBMultiMap oferecida pela classe CAtlMap . Quando apenas um pequeno número de elementos precisa de ser armazenado, considere usar a classe CSimpleMap em vez disso.

Para uma discussão mais completa das várias classes de coleção e das suas características e características de desempenho, consulte Classes de Coleção ATL.

Hierarquia de herança

CRBTree

CRBMap

Requerimentos

Cabeçalho: atlcoll.h

CRBMap::CRBMap

O construtor.

explicit CRBMap(size_t nBlockSize = 10) throw();

Parâmetros

nBlockSize
O tamanho do bloco.

Observações

O parâmetro nBlockSize é uma medida da quantidade de memória alocada quando um novo elemento é necessário. Blocos maiores reduzem chamadas para rotinas de alocação de memória, mas consomem mais recursos. O padrão aloca espaço para 10 elementos de cada vez.

Consulte a documentação da classe base CRBTree para informações sobre os outros métodos disponíveis.

Example

// Define a map object which has an
// integer key, a double value, and a
// block size of 5
CRBMap<int, double> myMap(5);

CRBMap::~CRBMap

O destruidor.

~CRBMap() throw();

Observações

Liberta quaisquer recursos alocados.

Consulte a documentação da classe base CRBTree para informações sobre os outros métodos disponíveis.

CRBMap::Pesquisa

Chame este método para procurar chaves ou valores no CRBMap objeto.

bool Lookup(KINARGTYPE key, VOUTARGTYPE value) const throw(...);
const CPair* Lookup(KINARGTYPE key) const throw();
CPair* Lookup(KINARGTYPE key) throw();

Parâmetros

chave
Especifica a chave que identifica o elemento a consultar.

value
Variável que recebe o valor consultado.

Valor de retorno

A primeira forma do método retorna verdadeira se a chave for encontrada, caso contrário falsa. A segunda e terceira formas devolvem um indicador para um CPair.

Observações

Consulte a documentação da classe base CRBTree para informações sobre os outros métodos disponíveis.

Example

// Look up the value for a key of 0
double v;
myMap.Lookup(0,v);

CRBMap::RemoveKey

Chame este método para remover um elemento do CRBMap objeto, dada a chave.

bool RemoveKey(KINARGTYPE key) throw();

Parâmetros

chave
A chave correspondente ao par de elementos que queres remover.

Valor de retorno

Retorna true se a chave for encontrada e removida, false em caso de falha.

Observações

Consulte a documentação da classe base CRBTree para informações sobre os outros métodos disponíveis.

Example

// Remove an element, based on the key of 0
ATLVERIFY(myMap.RemoveKey(0) == true);

CRBMap::SetAt

Chame este método para inserir um par de elementos no mapa.

POSITION SetAt(
    KINARGTYPE key,
    VINARGTYPE value) throw(...);

Parâmetros

chave
O valor-chave a acrescentar ao CRBMap objeto.

value
O valor a acrescentar ao CRBMap objeto.

Valor de retorno

Devolve a posição do par chave/valor no CRBMap objeto.

Observações

SetAt substitui um elemento existente se for encontrada uma chave correspondente. Se a chave não for encontrada, é criado um novo par chave/valor.

Consulte a documentação da classe base CRBTree para informações sobre os outros métodos disponíveis.

Example

// Add an element to the map, with a key of 0
myMap.SetAt(0,1.1);

Consulte também

CRBTree Classe
Classe CAtlMap
Classe CRBMultiMap
Visão geral da classe