Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 que permite que cada chave seja associada a mais do que um valor, usando uma árvore binária Red-Black.
Sintaxe
template<typename K,
typename V,
class KTraits = CElementTraits<K>,
class VTraits = CElementTraits<V>>
class CRBMultiMap : 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 |
|---|---|
| CRBMultiMap::CRBMultiMap | O construtor. |
| CRBMultiMap::~CRBMultiMap | O destruidor. |
Métodos Públicos
| Nome | Description |
|---|---|
| CRBMultiMap::FindFirstWithKey | Chame este método para encontrar a posição do primeiro elemento com uma dada chave. |
| CRBMultiMap::GetNextValueWithKey | Chame este método para obter o valor associado a uma dada chave e atualize o valor da posição. |
| CRBMultiMap::GetNextWithKey | Chame este método para obter o elemento associado a uma dada chave e atualize o valor da posição. |
| CRBMultiMap::Insert | Chame este método para inserir um par de elementos no mapa. |
| CRBMultiMap::RemoveKey | Chame este método para remover todos os elementos chave/valor de uma dada chave. |
Observações
CRBMultiMap fornece suporte para um array de mapeamento de qualquer tipo, gerindo um array ordenado de elementos-chave e valores. Ao contrário da classe CRBMap , cada chave pode ser associada a mais do que um valor.
Os elementos (constituídos por uma chave e um valor) são armazenados numa estrutura de árvore binária, usando o método CRBMultiMap::Insert . Os elementos podem ser removidos usando o método CRBMultiMap::RemoveKey , que elimina todos os elementos que correspondam à chave dada.
A percorrência da árvore é possível graças a métodos como CRBTree::GetHeadPosition, CRBTree::GetNext e CRBTree::GetNextValue. É possível aceder aos valores potencialmente múltiplos por chave usando os métodos CRBMultiMap::FindFirstWithKey, CRBMultiMap::GetNextValueWithKey e CRBMultiMap::GetNextWithKey . Veja o exemplo de CRBMultiMap::CRBMultiMap para uma ilustração disto na prática.
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.
CRBMultiMap é derivado de CRBTree, que implementa uma árvore binária usando o algoritmo Red-Black. Uma alternativa a CRBMultiMap e CRBMap é 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
CRBMultiMap
Requerimentos
Cabeçalho: atlcoll.h
CRBMultiMap::CRBMultiMap
O construtor.
explicit CRBMultiMap(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 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
O destruidor.
~CRBMultiMap() 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.
CRBMultiMap::FindFirstWithKey
Chame este método para encontrar a posição do primeiro elemento com uma dada chave.
POSITION FindFirstWithKey(KINARGTYPE key) const throw();
Parâmetros
chave
Especifica a chave que identifica o elemento a encontrar.
Valor de retorno
Devolve a POSIÇÃO do primeiro elemento chave/valor se a chave for encontrada, NULL caso contrário.
Observações
Uma chave no CRBMultiMap pode ter um ou mais valores associados. Este método fornecerá o valor da posição do primeiro valor (que pode, de facto, ser o único valor) associado a essa chave em particular. O valor da posição devolvido pode então ser usado com CRBMultiMap::GetNextValueWithKey ou CRBMultiMap::GetNextWithKey para obter o valor e atualizar a posição.
Consulte a documentação da classe base CRBTree para informações sobre os outros métodos disponíveis.
Example
Veja o exemplo de CRBMultiMap::CRBMultiMap.
CRBMultiMap::GetNextValueWithKey
Chame este método para obter o valor associado a uma dada chave e atualizar o valor da posição.
const V& GetNextValueWithKey(
POSITION& pos,
KINARGTYPE key) const throw();
V& GetNextValueWithKey(
POSITION& pos,
KINARGTYPE key) throw();
Parâmetros
Ponto de venda
O valor da posição, obtido com uma chamada para CRBMultiMap::FindFirstWithKey ou CRBMultiMap::GetNextWithKey, ou uma chamada anterior para GetNextValueWithKey.
chave
Especifica a chave que identifica o elemento a encontrar.
Valor de retorno
Devolve o par de elementos associado à chave dada.
Observações
O valor da posição é atualizado para apontar para o valor seguinte associado à chave. Se não existirem mais valores, o valor da posição é definido como NULL.
Consulte a documentação da classe base CRBTree para informações sobre os outros métodos disponíveis.
Example
Veja o exemplo de CRBMultiMap::CRBMultiMap.
CRBMultiMap::GetNextWithKey
Chame este método para obter o elemento associado a uma dada chave e atualizar o valor da posição.
const CPair* GetNextWithKey(
POSITION& pos,
KINARGTYPE key) const throw();
CPair* GetNextWithKey(
POSITION& pos,
KINARGTYPE key) throw();
Parâmetros
Ponto de venda
O valor da posição, obtido com uma chamada para CRBMultiMap::FindFirstWithKey ou CRBMultiMap::GetNextValueWithKey, ou uma chamada anterior para GetNextWithKey.
chave
Especifica a chave que identifica o elemento a encontrar.
Valor de retorno
Devolve o próximo elemento de classe CRBTree::CPair associado à chave dada.
Observações
O valor da posição é atualizado para apontar para o valor seguinte associado à chave. Se não existirem mais valores, o valor da posição é definido como NULL.
Consulte a documentação da classe base CRBTree para informações sobre os outros métodos disponíveis.
CRBMultiMap::Insert
Chame este método para inserir um par de elementos no mapa.
POSITION Insert(KINARGTYPE key, VINARGTYPE value) throw(...);
Parâmetros
chave
O valor-chave a acrescentar ao CRBMultiMap objeto.
value
O valor a adicionar ao CRBMultiMap objeto, associado à chave.
Valor de retorno
Devolve a posição do par chave/valor no CRBMultiMap objeto.
Observações
Consulte a documentação da classe base CRBTree para informações sobre os outros métodos disponíveis.
Example
Veja o exemplo de CRBMultiMap::CRBMultiMap.
CRBMultiMap::RemoveKey
Chame este método para remover todos os elementos chave/valor de uma dada chave.
size_t RemoveKey(KINARGTYPE key) throw();
Parâmetros
chave
Especifica a chave que identifica o(s) elemento(s) a eliminar.
Valor de retorno
Devolve o número de valores associados à chave dada.
Observações
RemoveKey Apaga todos os elementos de chave/valor que têm uma chave correspondente à chave.
Consulte a documentação da classe base CRBTree para informações sobre os outros métodos disponíveis.
Example
Veja o exemplo de CRBMultiMap::CRBMultiMap.
Consulte também
CRBTree Classe
Classe CAtlMap
Classe CRBMap
Visão geral da classe