unordered_multiset Class
A classe de modelo descreve um objeto que controla uma seqüência de comprimento variando de elementos do tipo const Key.A seqüência é rigidez ordenados por uma função de hash, que particiona a seqüência em um conjunto ordenado de subseqüências chamado buckets.Dentro de cada compartimento uma função de comparação determina se qualquer par de elementos tem equivalente de ordenação.Cada elemento serve como uma chave de classificação e de um valor.A seqüência é representada de forma que permite a pesquisa, inserção e remoção de um elemento arbitrário com um número de operações que pode ser independente do número de elementos na seqüência (tempo constante), pelo menos quando todos os compartimentos de memória são aproximadamente o mesmo comprimento.No pior caso, quando todos os elementos estão em uma lata de tinta, o número de operações é proporcional ao número de elementos na seqüência (tempo linear).Além disso, a inserção de um elemento não invalida nenhum iteradores e remover um elemento invalida os iteradores que apontem para o elemento removido.
template<class Key,
class Hash = std::hash<Key>,
class Pred = std::equal_to<Key>,
class Alloc = std::allocator<Key> >
class unordered_multiset;
Parâmetros
Parâmetro |
Descrição |
Key |
O tipo de chave. |
Hash |
O tipo de objeto de função de hash. |
Pred |
O tipo de objeto de função de comparação de igualdade. |
Alloc |
A classe do alocador. |
Membros
Definição de tipo |
Descrição |
O tipo de um alocador de gerenciamento de armazenamento. |
|
O tipo de um iterador constante para a seqüência controlado. |
|
O tipo de um iterador bucket constante para a seqüência controlado. |
|
O tipo de um ponteiro de constante para um elemento. |
|
O tipo de uma referência constante a um elemento. |
|
O tipo de uma distância assinado entre dois elementos. |
|
O tipo de função de hash. |
|
O tipo de um iterador para a seqüência controlado. |
|
O tipo da função de comparação. |
|
O tipo de uma chave de ordenação. |
|
O tipo de um iterador de bucket para a seqüência controlado. |
|
O tipo de um ponteiro para um elemento. |
|
O tipo de uma referência a um elemento. |
|
O tipo de uma distância não assinada entre dois elementos. |
|
O tipo de um elemento. |
Função de membro |
Descrição |
Designa o início da seqüência controlado. |
|
Obtém o número de partição de memória para um valor de chave. |
|
Obtém o número de compartimentos de memória. |
|
Obtém o tamanho de um depósito. |
|
Designa o início da seqüência controlado. |
|
Designa o final da seqüência de controlado. |
|
Remove todos os elementos. |
|
Localiza o número de elementos correspondentes a uma chave especificada. |
|
Adiciona um elemento construído no lugar. |
|
Adiciona um elemento construído no lugar, com a dica. |
|
Testes se não há elementos estão presentes. |
|
Designa o final da seqüência de controlado. |
|
Localiza o intervalo que coincide com uma chave especificada. |
|
Remove os elementos em posições especificadas. |
|
Localiza um elemento que coincida com uma chave especificada. |
|
Obtém o objeto alocador armazenado. |
|
Obtém o objeto de função de hash armazenado. |
|
Adiciona elementos. |
|
Obtém o objeto de função de comparação armazenado. |
|
Conta os elementos médio por bucket. |
|
Obtém o número máximo de compartimentos de memória. |
|
Obtém ou define os elementos máximo por bucket. |
|
Obtém o tamanho máximo da seqüência controlado. |
|
Recria a tabela de hash. |
|
Conta o número de elementos. |
|
Troca o conteúdo dos dois recipientes. |
|
Constrói um objeto de recipiente. |
Operador |
Descrição |
Copia uma tabela de hash. |
Comentários
O objeto ordena a seqüência em que ele controla chamando-se dois objetos armazenados, um objeto de função de comparação do tipo unordered_multiset::key_equal e um objeto de função de hash do tipo unordered_multiset::hasher.Você acessa o primeiro objeto armazenado chamando a função de membro unordered_multiset::key_eq(); e você acessar o segundo objeto armazenado chamando a função de membro unordered_multiset::hash_function().Especificamente, para todos os valores X e Y do tipo Key, a chamada key_eq()(X, Y) retorna true somente se os valores de dois argumento têm ordenando equivalente; a chamada hash_function()(keyval) produz uma distribuição de valores do tipo size_t.Ao contrário da classe de modelo unordered_set Class, um objeto da classe de modelo unordered_multiset não garante que key_eq()(X, Y) é sempre falso para quaisquer dois elementos da seqüência controlado.(As chaves não precisam ser exclusivas.)
O objeto também armazena um fator de carga máxima, que especifica que o número máximo desejado número médio de elementos por bucket.Se inserir um elemento faz com que unordered_multiset::load_factor() exceder o fator de carga máxima, o recipiente aumenta o número de compartimentos de memória e recria a tabela de hash, conforme necessário.
A ordem real dos elementos na seqüência controlado depende da função de hash, a função de comparação, a ordem de inserção, o fator de carga máxima e o número atual de recipientes.Em geral, é possível prever a ordem dos elementos na seqüência controlado.Você pode sempre ter certeza, no entanto, que qualquer subconjunto de elementos que possuem pedidos equivalentes são adjacentes na seqüência controlada.
O objeto aloca e libera o armazenamento para a seqüência em que ele controla através de um objeto alocador armazenado do tipo unordered_multiset::allocator_type.Tal objeto alocador deve ter a mesma interface externa, como um objeto de classe de modelo allocator.Observe que o objeto alocador armazenados não é copiado quando o objeto de recipiente é atribuído.
Requisitos
Cabeçalho: <unordered_set>
Namespace: std