hash_multimap Class
Observaçã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.
Construtores
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. |
Typedefs
Um tipo que representa a classe de allocator para o objeto de hash_multimap . |
|
Um tipo que fornece um iterador bidirecional que possa ler um elemento de const em hash_multimap. |
|
Um tipo que provê um ponteiro para um elemento de const em hash_multimap. |
|
Um tipo que fornecesse uma referência a um elemento de const armazenado em hash_multimap para ler e executar operações de const . |
|
Um tipo que fornece um iterador bidirecional que pode ler qualquer elemento de const em hash_multimap. |
|
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 |
|
Um tipo que fornece um iterador bidirecional que pode ler ou modificar qualquer elemento em hash_multimap. |
|
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. |
|
Um tipo que descreve o objeto de chave de tipo que constitui cada elemento de hash_multimap. |
|
Um tipo que representa o tipo de dados armazenados em hash_multimap. |
|
Um tipo que provê um ponteiro para um elemento em hash_multimap. |
|
Um tipo que fornecesse uma referência a um elemento armazenado em hash_multimap. |
|
Um tipo que fornece um iterador bidirecional que pode ler ou modificar um elemento em hash_multimapinvertido. |
|
Um tipo inteiro sem sinal de que possa representar o número de elementos em hash_multimap. |
|
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. |
funções de membro
Retorna um iterador que trata o primeiro elemento em hash_multimap. |
|
Retorna um iterador const que trata o primeiro elemento em hash_multimap. |
|
Retorna um iterador const atende o local que é bem-sucedido o último elemento em hash_multimap. |
|
apaga todos os elementos de hash_multimap. |
|
Retorna o número de elementos em hash_multimap cuja chave corresponde a uma chave parâmetro- especificada. |
|
Retorna um iterador const que trata o primeiro elemento em hash_multimapinvertido. |
|
Retorna um iterador const atende o local que é bem-sucedido o último elemento em hash_multimapinvertido. |
|
Insere um elemento construído no lugar em hash_multimap. |
|
Insere um elemento construído no lugar em hash_multimap, com uma dica de posicionamento. |
|
Teste se hash_multimap está vazia. |
|
Retorna um iterador atende o local que é bem-sucedido o último elemento em hash_multimap. |
|
Retorna um iterador atende o local que é bem-sucedido o último elemento em hash_multimap. |
|
Remove um elemento ou um intervalo de elementos em hash_multimap das posições especificadas |
|
Retorna um iterador que trata o local de um elemento em hash_multimap que tenha um principal equivalente a uma chave especificada. |
|
Retorna uma cópia do objeto de allocator usado para construir hash_multimap. |
|
Insere um elemento ou um intervalo de elementos em hash_multimap em uma posição especificada. |
|
Recupera uma cópia do objeto de comparação usado para chaves de ordem em hash_multimap. |
|
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. |
|
retorna o comprimento máximo de hash_multimap. |
|
Retorna um iterador que trata o primeiro elemento em hash_multimapinvertido. |
|
Retorna um iterador atende o local que é bem-sucedido o último elemento em hash_multimapinvertido. |
|
especifica um novo tamanho para hash_multimap. |
|
Troca os elementos de hash_multimapdois S. |
|
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. |
|
Recupera uma cópia do objeto de comparação usado para valores do elemento da ordem em hash_multimap. |
Operadores
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