Compartilhar via


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

unordered_multiset::allocator_type

O tipo de um alocador de gerenciamento de armazenamento.

unordered_multiset::const_iterator

O tipo de um iterador constante para a seqüência controlado.

unordered_multiset::const_local_iterator

O tipo de um iterador bucket constante para a seqüência controlado.

unordered_multiset::const_pointer

O tipo de um ponteiro de constante para um elemento.

unordered_multiset::const_reference

O tipo de uma referência constante a um elemento.

unordered_multiset::difference_type

O tipo de uma distância assinado entre dois elementos.

unordered_multiset::hasher

O tipo de função de hash.

unordered_multiset::iterator

O tipo de um iterador para a seqüência controlado.

unordered_multiset::key_equal

O tipo da função de comparação.

unordered_multiset::key_type

O tipo de uma chave de ordenação.

unordered_multiset::local_iterator

O tipo de um iterador de bucket para a seqüência controlado.

unordered_multiset::pointer

O tipo de um ponteiro para um elemento.

unordered_multiset::reference

O tipo de uma referência a um elemento.

unordered_multiset::size_type

O tipo de uma distância não assinada entre dois elementos.

unordered_multiset::value_type

O tipo de um elemento.

Função de membro

Descrição

unordered_multiset::begin

Designa o início da seqüência controlado.

unordered_multiset::bucket

Obtém o número de partição de memória para um valor de chave.

unordered_multiset::bucket_count

Obtém o número de compartimentos de memória.

unordered_multiset::bucket_size

Obtém o tamanho de um depósito.

unordered_multiset::cbegin

Designa o início da seqüência controlado.

unordered_multiset::cend

Designa o final da seqüência de controlado.

unordered_multiset::clear

Remove todos os elementos.

unordered_multiset::count

Localiza o número de elementos correspondentes a uma chave especificada.

unordered_multiset::emplace

Adiciona um elemento construído no lugar.

unordered_multiset::emplace_hint

Adiciona um elemento construído no lugar, com a dica.

unordered_multiset::empty

Testes se não há elementos estão presentes.

unordered_multiset::end

Designa o final da seqüência de controlado.

unordered_multiset::equal_range

Localiza o intervalo que coincide com uma chave especificada.

unordered_multiset::erase

Remove os elementos em posições especificadas.

unordered_multiset::find

Localiza um elemento que coincida com uma chave especificada.

unordered_multiset::get_allocator

Obtém o objeto alocador armazenado.

unordered_multiset::hash_function

Obtém o objeto de função de hash armazenado.

unordered_multiset::insert

Adiciona elementos.

unordered_multiset::key_eq

Obtém o objeto de função de comparação armazenado.

unordered_multiset::load_factor

Conta os elementos médio por bucket.

unordered_multiset::max_bucket_count

Obtém o número máximo de compartimentos de memória.

unordered_multiset::max_load_factor

Obtém ou define os elementos máximo por bucket.

unordered_multiset::max_size

Obtém o tamanho máximo da seqüência controlado.

unordered_multiset::rehash

Recria a tabela de hash.

unordered_multiset::size

Conta o número de elementos.

unordered_multiset::swap

Troca o conteúdo dos dois recipientes.

unordered_multiset::unordered_multiset

Constrói um objeto de recipiente.

Operador

Descrição

unordered_multiset::operator=

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

Consulte também

Referência

<unordered_set>

unordered_multiset Class

Outros recursos

<unordered_set> Membros