Partilhar via


hash_multimap Class

ObservaçãoObservação

este API é obsoleto.Uma alternativa é unordered_multimap Class.

O hash_multimap da classe recipiente é uma extensão de biblioteca padrão de modelo e é usado para armazenamento e recuperação rápida de dados de uma coleção em que cada elemento é um controle que tem uma chave de tipo cujo valor não precisa ser único e um valor de dados associado.

template <
   class Key, 
   class Type, 
   class Traits=hash_compare<Key, less<Key> >, 
   class Allocator=allocator<pair <const Key, Type> > 
>
class hash_multimap

Parâmetros

  • Chave
    O tipo de dados principal para ser armazenado no hash_multimap.

  • Tipo
    O elemento tipo de dados a ser armazenado no hash_multimap.

  • Traits
    O tipo que inclui dois objetos de função, uma classe de Traits que pode comparar dois valores de elemento como chaves de tipo para determinar a ordem relativa e uma função de hash que é um predicado unário que mapeia chave valores dos elementos em números inteiros sem sinal de tipo size_t.Esse argumento é opcional, e hash_compare*<Key, less<Key> >* é o valor padrão.

  • Allocator
    O tipo que representa o objeto armazenado do distribuidor que encapsula detalhes sobre a alocação e a desalocação de hash_multimap de memória.Esse argumento é opcional, e o valor padrão é allocator*<*pair *<*const fechado, Type> >.

Comentários

o hash_multimap é:

  • Um contêiner associativo, enquanto um contêiner variável de tamanho que ofereça suporte a recuperação eficiente de valores de elemento baseasse em um valor de chave associada.

  • Reversível, porque ele fornece um iterador bidirecional para acessar seus elementos.

  • De hash, porque seus elementos são agrupados de compartimentos de memória com base no valor de uma função de hash aplicada aos valores da chave de elementos.

  • Múltiplas, porque seus elementos não precisam ter chaves exclusivas, para que um valor de chave pode ter vários valores de dados dos elementos associados com ele.

  • Um contêiner associativo de pares, porque seus valores de elementos são distintos de seus valores chave.

  • Uma classe de modelo, porque a funcionalidade que fornece é genérico e portanto independente do tipo específico de dados contidos como elementos ou chaves.Os tipos de dados para ser usados para os elementos e as chaves, em vez de isso, são especificados como parâmetros no modelo de classe juntamente com a função e o distribuidor de comparação.

A principal vantagem de hash sobre a classificação é maior eficiência; um hash com êxito executa inserções, exclusões, e localiza no momento da média da constante em comparação para um horário proporcionais ao logaritmo o número de elementos no recipiente para técnicas de classificação.O valor de um elemento em um hash_multimap, mas não o valor da chave associado, pode ser alterado diretamente.Em vez de isso, os valores associados com os principais elementos devem ser excluídos antigos e novos valores chave ser associados com os novos elementos inseridos.

A escolha do tipo recipiente deve ser geralmente com base no tipo de pesquisa e de inserir exigido pelo aplicativo.Contêiners associativos formatadas em hash são otimizados para operações de pesquisa, de inserção e remoção.As funções de membro que suportam explicitamente essas operações são eficientes quando usadas com uma função de hash bem estruturado, executando as em um horário que estão na constante intermediária e não dependente no número de elementos no contêiner.Uma função de hash bem estruturado gera uma uniforme distribuição de valores formatadas em hash e minimiza o número de conflitos, onde é uma colisão determina ocorrer quando os valores principais distintas são mapeados no mesmo valor de hash.Em o caso mais grave, com a função de hash possível a pior, o número de operações é proporcionalmente para o número de elementos na seqüência tempo linear ().

O hash_multimap deve ser o contêiner associativo de opção quando as condições que associa os valores com suas chaves forem atendidas pelo aplicativo.Um modelo para esse tipo de estrutura é uma lista ordenada de palavras-chave com os valores da cadeia de caracteres associadas que fornecem as definições por exemplo, onde a palavra sempre não foram definidas como.Se, em vez de isso, as palavras-chave foram definidos exclusivamente para que as chaves são exclusivos, então um hash_map seria o contêiner de escolha.Se, por outro lado, apenas a lista de palavras foi armazenada, então um hash_set seria o contêiner correto.Se várias ocorrências da palavra foram permitidas, então um hash_multiset seria a estrutura do recipiente apropriado.

O hash_multimap da seqüência que controla chamando um objeto armazenado Traits de hash do tipo value_compare.Este objeto armazenado pode ser acessado chamar a função de membro key_comp.Tal objeto de função deve se comportar o mesmo que um objeto de classe hash_compare<Key, less*<Key> >.Especificamente, para todos os valores _Key de tipo Chave, a chamada Traits(_Key)* produzem uma distribuição dos valores do tipo size_t.

Geralmente, os elementos precisam ser simplesmente menor que comparáveis estabelecer ordem: para que, dado todos os dois elementos, pode determinar se qualquer um que são equivalentes (no sentido que nenhum for menor do que o outro) ou um que é menor que o outro.Isso resulta em ordenação entre elementos que não são do equivalente.Em uma nota mais técnica, a função de comparação binária é um predicado que induza ordenação fraco strict no sentido matemático padrão.Um predicado fde binária (x,*y)*é um objeto de função que tem dois objetos de argumento x e y e um valor de retorno de verdadeiro ou falso.Uma classificação aplicada em um hash_multimap é uma ordenação livre restrita se o predicado binária é irreflexive, anti-simétrico, e transitivo e se equivalências é transitiva, onde dois objetos x e y são definidos para ser equivalentes enquanto tanto f(x,y) e f(y,x) são falsos.Se a condição mais segura de igualdade entre chaves substitui os de equivalência, então ordenação transformações total (no sentido que todos os elementos são ordenados em relação a se) e chaves correspondidas serão indiscerníveis de se.

A ordem real de elementos na seqüência controlada depende da função de hash, função, classificação e de tamanho atual de tabela de hash armazenado no objeto contêiner.Você não pode determinar o tamanho atual de hash a tabela, para que você não pode prever em geral a ordem dos elementos na seqüência controlada.Inserindo os elementos não invalida nenhum iterador, e remover elementos invalida somente os iteradores que eles tivessem apontada especificamente em elementos removidos.

O iterador fornecido pela classe de hash_multimap é um iterador bidirecional, mas as funções de membro inserção e hash_multimap de classe têm as versões que recebem como parâmetros de modelo um iterador mais flexível de entrada, cujos requisitos mínimos de funcionalidade sejam mais do que aquelas se a classe de iteradores bidirecionais.Os conceitos diferentes de iterador formam uma família relacionada por refinamentos em sua funcionalidade.Cada conceito de iterador tem seu próprio hash_multimap dos requisitos, e os algoritmos que funcionam com eles o limite de deve as suposições os requisitos fornecidos pelo tipo de iterador.Pode-se suponha que um iterador de entrada pode ser desreferenciado para referir-se a qualquer objeto e que pode ser iterador incrementado a seguir na seqüência.Este é um hash_multimap mínimo de funcionalidade, mas é suficiente para poder falar significativa sobre um intervalo de iteradores [_First, _Last) no contexto das funções de membro.

Em o Visual C++ .NET 2003, os membros dos arquivos de cabeçalho de <hash_map> e de <hash_set> não estão mais no namespace de STD, mas tenham sido portados em vez de stdext no namespace.Consulte O namespace de stdext para mais informações.

6ewecebk.collapse_all(pt-br,VS.110).gifConstrutores

hash_multimap

Constrói uma lista de um tamanho específico ou com elementos de um valor específico ou com allocator específico ou como uma cópia de um outro hash_multimap.

6ewecebk.collapse_all(pt-br,VS.110).gifTypedefs

allocator_type

Um tipo que representa a classe de allocator para o objeto de hash_multimap .

const_iterator

Um tipo que fornece um iterador bidirecional que possa ler um elemento de const em hash_multimap.

const_pointer

Um tipo que provê um ponteiro para um elemento de const em hash_multimap.

const_reference

Um tipo que fornecesse uma referência a um elemento de const armazenado em hash_multimap para ler e executar operações de const .

const_reverse_iterator

Um tipo que fornece um iterador bidirecional que pode ler qualquer elemento de const em hash_multimap.

difference_type

Um tipo de inteiro com sinal que pode ser usado para representar o número de elementos de hash_multimap em um intervalo entre elementos. apontado por iteradores

iterador

Um tipo que fornece um iterador bidirecional que pode ler ou modificar qualquer elemento em hash_multimap.

key_compare

Um tipo que provê um objeto de função que pode comparar duas chaves de tipo para determinar a ordem relativo de dois elementos em hash_multimap.

key_type

Um tipo que descreve o objeto de chave de tipo que constitui cada elemento de hash_multimap.

mapped_type

Um tipo que representa o tipo de dados armazenados em hash_multimap.

ponteiro

Um tipo que provê um ponteiro para um elemento em hash_multimap.

referência

Um tipo que fornecesse uma referência a um elemento armazenado em hash_multimap.

reverse_iterator

Um tipo que fornece um iterador bidirecional que pode ler ou modificar um elemento em hash_multimapinvertido.

size_type

Um tipo inteiro sem sinal de que possa representar o número de elementos em hash_multimap.

value_type

Um tipo que provê um objeto de função que possa comparar dois elementos como chaves de tipo para determinar a ordem em hash_multimaprelativo.

6ewecebk.collapse_all(pt-br,VS.110).giffunções de membro

inicie

Retorna um iterador que trata o primeiro elemento em hash_multimap.

hash_multimap::cbegin

Retorna um iterador const que trata o primeiro elemento em hash_multimap.

hash_multimap::cend

Retorna um iterador const atende o local que é bem-sucedido o último elemento em hash_multimap.

espaço livre

apaga todos os elementos de hash_multimap.

contagem

Retorna o número de elementos em hash_multimap cuja chave corresponde a uma chave parâmetro- especificada.

hash_multimap::crbegin

Retorna um iterador const que trata o primeiro elemento em hash_multimapinvertido.

hash_multimap::crend

Retorna um iterador const atende o local que é bem-sucedido o último elemento em hash_multimapinvertido.

hash_multimap::emplace

Insere um elemento construído no lugar em hash_multimap.

hash_multimap::emplace_hint

Insere um elemento construído no lugar em hash_multimap, com uma dica de posicionamento.

vazio

Teste se hash_multimap está vazia.

end

Retorna um iterador atende o local que é bem-sucedido o último elemento em hash_multimap.

equal_range

Retorna um iterador atende o local que é bem-sucedido o último elemento em hash_multimap.

erase

Remove um elemento ou um intervalo de elementos em hash_multimap das posições especificadas

localizar

Retorna um iterador que trata o local de um elemento em hash_multimap que tenha um principal equivalente a uma chave especificada.

get_allocator

Retorna uma cópia do objeto de allocator usado para construir hash_multimap.

inserção

Insere um elemento ou um intervalo de elementos em hash_multimap em uma posição especificada.

key_comp

Recupera uma cópia do objeto de comparação usado para chaves de ordem em hash_multimap.

lower_bound

Retorna um iterador para o primeiro elemento em hash_multimap que com um valor de chave que é igual ou maior do que de uma chave especificada.

max_size

retorna o comprimento máximo de hash_multimap.

rbegin

Retorna um iterador que trata o primeiro elemento em hash_multimapinvertido.

arrancar

Retorna um iterador atende o local que é bem-sucedido o último elemento em hash_multimapinvertido.

tamanho

especifica um novo tamanho para hash_multimap.

troca

Troca os elementos de hash_multimapdois S.

upper_bound

Retorna um iterador para o primeiro elemento em hash_multimap que com um valor de chave que é maior do que a de uma chave especificada.

value_comp

Recupera uma cópia do objeto de comparação usado para valores do elemento da ordem em hash_multimap.

6ewecebk.collapse_all(pt-br,VS.110).gifOperadores

hash_multimap::operator=

Substitui os elementos de hash_multimap com uma cópia de outro hash_multimap.

Requisitos

Cabeçalho: <hash_map>

stdext denamespace:

Consulte também

Referência

Segurança do thread na biblioteca C++ padrão

Standard Template Library

Outros recursos

<hash_map> Membros

os membros do hash_multimap