Compartilhar via


Classe unordered_map

A classe de modelo descreve um objeto que controla uma sequência de comprimento variado de elementos do tipo std::pair<const Key, Ty>. A sequência é ordenada sem muita rigidez por uma função de hash, que particiona a sequência em um conjunto ordenado de subsequências chamado bucket. Dentro de cada bucket uma função de comparação determina se um par de elementos tem ordenação equivalente. Cada elemento armazena dois objetos, uma chave de classificação e um valor. A sequência é representada de forma a permitir pesquisa, inserção e remoção de um elemento com um número arbitrário de operações que podem ser independentes do número de elementos na sequência (tempo constante), pelo menos quando todos os buckets forem de comprimento aproximadamente igual. No pior caso, quando todos os elementos estiverem em um bucket, o número de operações será proporcional ao número de elementos na sequência (tempo linear). Além disso, inserir um elemento não invalida iteradores, e remover um elemento invalida apenas os iteradores que apontam o elemento removido.

template<class Key,
    class Ty,
    class Hash = std::hash<Key>,
    class Pred = std::equal_to<Key>,
    class Alloc = std::allocator<std::pair<const Key, Ty> > >
    class unordered_map;

Parâmetros

Parâmetro

Descrição

Key

O tipo principal.

Ty

O tipo mapeado.

Hash

O tipo de objeto da função de hash.

Pred

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

Alloc

A classe do alocador.

Membros

Definição do tipo

Descrição

unordered_map::allocator_type

O tipo de um distribuidor para gerenciar o armazenamento.

unordered_map::const_iterator

O tipo de um iterador de constante para a sequência controlada.

unordered_map::const_local_iterator

O tipo de um iterador de bucket de constante para a sequência controlada.

unordered_map::const_pointer

O tipo de um ponteiro de constante para um elemento.

unordered_map::const_reference

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

unordered_map::difference_type

O tipo de uma distância com sinal entre dois elementos.

unordered_map::hasher

O tipo de função de hash.

unordered_map::iterator

O tipo de um iterador para a sequência controlada.

unordered_map::key_equal

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

unordered_map::key_type

O tipo de uma chave de classificação.

unordered_map::local_iterator

O tipo de um iterador de bucket para a sequência controlada.

unordered_map::mapped_type

O tipo de um valor mapeado associado a cada chave.

unordered_map::pointer

O tipo de um ponteiro para um elemento.

unordered_map::reference

O tipo de uma referência para um elemento.

unordered_map::size_type

O tipo de uma distância sem sinal entre dois elementos.

unordered_map::value_type

O tipo de um elemento.

Função membro

Descrição

unordered_map::at

Localiza um elemento com a chave especificada.

unordered_map::begin

Designa o início da sequência controlada.

unordered_map::bucket

Obtém o número de buckets de um valor de chave.

unordered_map::bucket_count

Obtém o número de buckets.

unordered_map::bucket_size

Obtém o tamanho de um bucket.

unordered_map::cbegin

Designa o início da sequência controlada.

unordered_map::cend

Designa o fim da sequência controlada.

unordered_map::clear

Remove todos os elementos.

unordered_map::count

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

unordered_map::emplace

Adiciona um elemento construído no lugar.

unordered_map::emplace_hint

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

unordered_map::empty

Testa se nenhum elemento está presente.

unordered_map::end

Designa o fim da sequência controlada.

unordered_map::equal_range

Localiza o intervalo que corresponde a uma chave especificada.

unordered_map::erase

Remove os elementos em posições especificadas.

unordered_map::find

Localiza um elemento que corresponde a uma chave especificada.

unordered_map::get_allocator

Obtém o objeto de alocador armazenado.

unordered_map::hash_function

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

unordered_map::insert

Adiciona elementos.

unordered_map::key_eq

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

unordered_map::load_factor

Conta a média de elementos por bucket.

unordered_map::max_bucket_count

Obtém o número máximo de buckets.

unordered_map::max_load_factor

Obtém ou define o máximo de elementos por bucket.

unordered_map::max_size

Obtém o tamanho máximo da sequência controlada.

unordered_map::rehash

Recria a tabela de hash.

unordered_map::size

Conta o número de elementos.

unordered_map::swap

Alterna o conteúdo de dois contêineres.

unordered_map::unordered_map

Constrói um objeto contêiner.

Operador

Descrição

unordered_map::operator[]

Localiza ou insere um elemento com a chave especificada.

unordered_map::operator=

Copia uma tabela de hash.

Comentários

O objeto ordena a sequência que ele controla chamando dois objetos armazenados, um objeto de função de comparação do tipo unordered_map::key_equal e um objeto de função de hash do tipo unordered_map::hasher. Você acessa o primeiro objeto armazenado chamando a função membro unordered_map::key_eq(); e acessa o segundo objeto armazenado chamando a função membro unordered_map::hash_function(). Especificamente, para todos os valores X e Y do tipo Key, a chamada key_eq()(X, Y) retornará true somente se os dois valores de argumento tiverem ordem equivalente; a chamada hash_function()(keyval) resulta em uma distribuição de valores do tipo size_t. Diferentemente da classe de modelo Classe unordered_multimap, um objeto da classe de modelo unordered_map garante que key_eq()(X, Y) seja sempre false para um dos dois elementos da sequência controlada. (As chaves são exclusivas.)

O objeto também armazena um fator de carga máximo, que especifica o número máximo médio desejado de elementos por bucket. Se a inserção de um elemento fizer com que unordered_map::load_factor() exceda o fator de carga máximo, o contêiner aumentará o número de buckets e recriará a tabela de hash conforme a necessidade.

A ordem real de elementos na sequência controlada depende da função de hash, da função de comparação, da ordem de inserção, do fator máximo de carga e do número atual de buckets. Você não pode fazer uma previsão geral da ordem dos elementos na sequência controlada. No entanto, você sempre terá certeza de que qualquer subconjunto de elementos que tenha ordem equivalente será adjacente na sequência de controle.

O objeto aloca e libera armazenamento para a sequência que controla por meio de um objeto armazenado de alocador do tipo unordered_map::allocator_type. Esse objeto de alocador deve ter a mesma interface externa que um objeto da classe de modelo allocator. Observe que o objeto de alocador armazenado não é copiado quando o objeto de contêiner é atribuído.

Requisitos

Cabeçalho: <unordered_map>

Namespace: std

Consulte também

Referência

<unordered_map>

Segurança de threads na Biblioteca Padrão C++

Biblioteca de Modelos Padrão

Conceitos

Contêineres