Partilhar via


concurrent_unordered_map Classe

A classe concurrent_unordered_map é um contêiner seguro para simultaneidade que controla uma sequência de comprimento variável de elementos do tipo std::pair<const K, _Element_type>. A sequência é representada de uma forma que permite operações de acréscimo seguro para simultaneidade, acesso a elementos, acesso de iterador e travessia de iterador. Aqui, simultaneidade segura significa que ponteiros ou iteradores são sempre válidos. Não é uma garantia de inicialização de elementos ou de uma ordem transversal específica.

Sintaxe

template <typename K,
    typename _Element_type,
    typename _Hasher = std::hash<K>,
    typename key_equality = std::equal_to<K>,
    typename _Allocator_type = std::allocator<std::pair<const K, _Element_type>>>
class concurrent_unordered_map : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K, _Element_type, details::_Hash_compare<K, _Hasher, key_equality>, _Allocator_type, false>>;

Parâmetros

K
O tipo de chave.

_Element_type
O tipo mapeado.

_Hasher
O tipo de objeto da função hash. Esse argumento é opcional e o valor padrão é std::hash<K>.

key_equality
O tipo de objeto da função de comparação de igualdade. Esse argumento é opcional e o valor padrão é std::equal_to<K>.

_Allocator_type
O tipo que representa o objeto de alocador armazenado que encapsula detalhes sobre a alocação e desalocação de memória para o mapa não ordenado simultâneo. Esse argumento é opcional e o valor padrão é std::allocator<std::pair<K, _Element_type>>.

Membros

Typedefs Públicos

Designação Descrição
allocator_type O tipo de alocador para gerenciar o armazenamento.
const_iterator O tipo de iterador constante para a sequência controlada.
const_local_iterator O tipo de um iterador de bucket constante para a sequência controlada.
const_pointer O tipo de um ponteiro constante para um elemento.
const_reference O tipo de referência constante a um elemento.
difference_type O tipo de distância assinada entre dois elementos.
hasher O tipo da função hash.
iterator O tipo de iterador para a sequência controlada.
key_equal O tipo da função de comparação.
key_type O tipo de uma chave de ordenação.
local_iterator O tipo de um iterador de bucket para a sequência controlada.
mapped_type O tipo de um valor mapeado associado a cada chave.
pointer O tipo de um ponteiro para um elemento.
reference O tipo de referência a um elemento.
size_type O tipo de uma distância não assinada entre dois elementos.
value_type O tipo de um elemento.

Construtores Públicos

Designação Descrição
concurrent_unordered_map Sobrecarregado. Constrói um mapa não ordenado simultâneo.

Métodos Públicos

Designação Descrição
na Sobrecarregado. Localiza um elemento em um concurrent_unordered_map com um valor de chave especificado. Este método é seguro para simultaneidade.
hash_function Obtém o objeto de função hash armazenado.
inserir Sobrecarregado. Adiciona elementos ao objeto concurrent_unordered_map.
key_eq Obtém o objeto da função de comparação de igualdade armazenada.
trocar Troca o conteúdo de dois objetos concurrent_unordered_map. Este método não é seguro para simultaneidade.
unsafe_erase Sobrecarregado. Remove elementos do concurrent_unordered_map em posições especificadas. Este método não é seguro para simultaneidade.

Operadores Públicos

Designação Descrição
operador[] Sobrecarregado. Localiza ou insere um elemento com a chave especificada. Este método é seguro para simultaneidade.
operador= Sobrecarregado. Atribui o conteúdo de outro concurrent_unordered_map objetar a este. Este método não é seguro para simultaneidade.

Comentários

Para obter informações detalhadas sobre a classe concurrent_unordered_map, consulte Parallel Containers and Objects.

Hierarquia de herança

_Traits

_Concurrent_hash

concurrent_unordered_map

Requerimentos

cabeçalho: concurrent_unordered_map.h

Namespace: simultaneidade

em

Localiza um elemento em um concurrent_unordered_map com um valor de chave especificado. Este método é seguro para simultaneidade.

mapped_type& at(const key_type& KVal);

const mapped_type& at(const key_type& KVal) const;

Parâmetros

KVal
O valor-chave a ser encontrado.

Valor de retorno

Uma referência ao valor de dados do elemento encontrado.

Comentários

Se o valor da chave de argumento não for encontrado, a função lançará um objeto de classe out_of_range.

começar

Retorna um iterador apontando para o primeiro elemento no contêiner simultâneo. Este método é seguro para simultaneidade.

iterator begin();

const_iterator begin() const;

Valor de retorno

Um iterador para o primeiro elemento no contêiner simultâneo.

Cbegin

Retorna um iterador const apontando para o primeiro elemento no contêiner simultâneo. Este método é seguro para simultaneidade.

const_iterator cbegin() const;

Valor de retorno

Um iterador const para o primeiro elemento no contêiner simultâneo.

Curva

Retorna um iterador const apontando para o local que sucede o último elemento no contêiner simultâneo. Este método é seguro para simultaneidade.

const_iterator cend() const;

Valor de retorno

Um iterador const para o local que sucede o último elemento no contêiner simultâneo.

limpar

Apaga todos os elementos no contêiner simultâneo. Esta função não é segura para simultaneidade.

void clear();

concurrent_unordered_map

Constrói um mapa não ordenado simultâneo.

explicit concurrent_unordered_map(
    size_type _Number_of_buckets = 8,
    const hasher& _Hasher = hasher(),
    const key_equal& key_equality = key_equal(),
    const allocator_type& _Allocator = allocator_type());

concurrent_unordered_map(
    const allocator_type& _Allocator);

template <typename _Iterator>
concurrent_unordered_map(_Iterator _Begin,
    _Iterator _End,
    size_type _Number_of_buckets = 8,
    const hasher& _Hasher = hasher(),
    const key_equal& key_equality = key_equal(),
    const allocator_type& _Allocator = allocator_type());

concurrent_unordered_map(
    const concurrent_unordered_map& _Umap);

concurrent_unordered_map(
    const concurrent_unordered_map& _Umap,
    const allocator_type& _Allocator);

concurrent_unordered_map(
    concurrent_unordered_map&& _Umap);

Parâmetros

_Iterator
O tipo do iterador de entrada.

_Number_of_buckets
O número inicial de buckets para este mapa não ordenado.

_Hasher
A função hash para este mapa não ordenado.

key_equality
A função de comparação de igualdade para este mapa não ordenado.

_Allocator
O alocador para este mapa não ordenado.

_Begin
A posição do primeiro elemento na gama de elementos a serem copiados.

_End
A posição do primeiro elemento além da gama de elementos a serem copiados.

_Umap
A origem concurrent_unordered_map objeto do qual copiar ou mover elementos.

Comentários

Todos os construtores armazenam um objeto alocador _Allocator e inicializam o mapa não ordenado.

O primeiro construtor especifica um mapa inicial vazio e especifica explicitamente o número de buckets, função hash, função de igualdade e tipo de alocador a ser usado.

O segundo construtor especifica um alocador para o mapa não ordenado.

O terceiro construtor especifica valores fornecidos pelo intervalo do iterador [ _Begin, _End).

O quarto e quinto construtores especificam uma cópia do mapa não ordenado simultâneo _Umap.

O último construtor especifica um movimento do mapa não ordenado simultâneo _Umap.

contagem

Conta o número de elementos correspondentes a uma chave especificada. Esta função é segura para simultaneidade.

size_type count(const key_type& KVal) const;

Parâmetros

KVal
A chave para pesquisar.

Valor de retorno

O número de vezes que a chave aparece no contêiner.

vazio

Testa se nenhum elemento está presente. Este método é seguro para simultaneidade.

bool empty() const;

Valor de retorno

true se o contêiner simultâneo estiver vazio, false caso contrário.

Comentários

Na presença de inserções simultâneas, se o contêiner simultâneo está vazio ou não pode mudar imediatamente após chamar essa função, antes mesmo que o valor de retorno seja lido.

fim

Retorna um iterador apontando para o local que sucede o último elemento no contêiner simultâneo. Este método é seguro para simultaneidade.

iterator end();

const_iterator end() const;

Valor de retorno

Um iterador para o local que sucede o último elemento no contêiner simultâneo.

equal_range

Localiza um intervalo que corresponde a uma chave especificada. Esta função é segura para simultaneidade.

std::pair<iterator,
    iterator> equal_range(
    const key_type& KVal);

std::pair<const_iterator,
    const_iterator> equal_range(
    const key_type& KVal) const;

Parâmetros

KVal
O valor-chave a ser pesquisado.

Valor de retorno

Um par onde o primeiro elemento é um iterador para o início e o segundo elemento é um iterador para o final do intervalo.

Comentários

É possível que inserções simultâneas façam com que chaves adicionais sejam inseridas após o iterador inicial e antes do iterador final.

Procurar

Localiza um elemento que corresponde a uma chave especificada. Esta função é segura para simultaneidade.

iterator find(const key_type& KVal);

const_iterator find(const key_type& KVal) const;

Parâmetros

KVal
O valor-chave a ser pesquisado.

Valor de retorno

Um iterador apontando para o local do primeiro elemento que correspondeu à chave fornecida, ou o iterador end() se esse elemento não existir.

get_allocator

Retorna o objeto de alocador armazenado para esse contêiner simultâneo. Este método é seguro para simultaneidade.

allocator_type get_allocator() const;

Valor de retorno

O objeto alocador armazenado para esse contêiner simultâneo.

hash_function

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

hasher hash_function() const;

Valor de retorno

O objeto de função hash armazenado.

inserir

Adiciona elementos ao objeto concurrent_unordered_map.

std::pair<iterator,
    bool> insert(
    const value_type& value);

iterator insert(
    const_iterator _Where,
    const value_type& value);

template<class _Iterator>
void insert(_Iterator first,
    _Iterator last);

template<class V>
std::pair<iterator,
    bool> insert(
    V&& value);

template<class V>
typename std::enable_if<!std::is_same<const_iterator,
    typename std::remove_reference<V>::type>::value,
    iterator>::type insert(
    const_iterator _Where,
    V&& value);

Parâmetros

_Iterator
O tipo de iterador usado para inserção.

V
O tipo do valor inserido no mapa.

valor
O valor a ser inserido.

_Where
O local inicial para procurar um ponto de inserção.

primeira
O início do intervalo a inserir.

últimos
O fim do intervalo a inserir.

Valor de retorno

Um par que contém um iterador e um valor booleano. Consulte a seção Comentários para obter mais detalhes.

Comentários

A primeira função de membro determina se existe um elemento X na sequência cuja chave tem ordenação equivalente à de value. Caso contrário, ele cria esse elemento X e o inicializa com value. Em seguida, a função determina o where iterador que designa X. Se ocorreu uma inserção, a função retorna std::pair(where, true). Caso contrário, ele retornará std::pair(where, false).

A segunda função de membro retorna insert(value), usando _Where como um ponto de partida dentro da sequência controlada para procurar o ponto de inserção.

A função de terceiro membro insere a sequência de valores de elementos do intervalo [ first, last).

As duas últimas funções de membro se comportam da mesma forma que as duas primeiras, exceto que value é usado para construir o valor inserido.

key_eq

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

key_equal key_eq() const;

Valor de retorno

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

load_factor

Calcula e retorna o fator de carga atual do contêiner. O fator de carga é o número de elementos no contêiner dividido pelo número de caçambas.

float load_factor() const;

Valor de retorno

O fator de carga para o recipiente.

max_load_factor

Obtém ou define o fator de carga máximo do contêiner. O fator de carga máximo é o maior número de elementos do que pode estar em qualquer balde antes que o contêiner cresça sua tabela interna.

float max_load_factor() const;

void max_load_factor(float _Newmax);

Parâmetros

_Newmax

Valor de retorno

A primeira função de membro retorna o fator de carga máximo armazenado. A segunda função de membro não retorna um valor, mas lança uma exceção out_of_range se o fator de carga fornecido for inválido.

tamanho_máximo

Retorna o tamanho máximo do contêiner simultâneo, determinado pelo alocador. Este método é seguro para simultaneidade.

size_type max_size() const;

Valor de retorno

O número máximo de elementos que podem ser inseridos nesse contêiner simultâneo.

Comentários

Esse valor limite superior pode realmente ser maior do que o que o contêiner pode realmente conter.

operador[]

Localiza ou insere um elemento com a chave especificada. Este método é seguro para simultaneidade.

mapped_type& operator[](const key_type& kval);

mapped_type& operator[](key_type&& kval);

Parâmetros

KVal
O valor-chave para

localizar ou inserir.

Valor de retorno

Uma referência ao valor de dados do elemento encontrado ou inserido.

Comentários

Se o valor da chave de argumento não for encontrado, ele será inserido junto com o valor padrão do tipo de dados.

operator[] pode ser usado para inserir elementos em um mapa m usando m[key] = DataValue;, onde DataValue é o valor da mapped_type do elemento com um valor de chave de key.

Ao usar operator[] para inserir elementos, a referência retornada não indica se uma inserção está alterando um elemento pré-existente ou criando um novo. As funções de membro find e inserir podem ser usadas para determinar se um elemento com uma chave especificada já está presente antes de uma inserção.

operador=

Atribui o conteúdo de outro concurrent_unordered_map objetar a este. Este método não é seguro para simultaneidade.

concurrent_unordered_map& operator= (const concurrent_unordered_map& _Umap);

concurrent_unordered_map& operator= (concurrent_unordered_map&& _Umap);

Parâmetros

_Umap
A origem concurrent_unordered_map objeto.

Valor de retorno

Uma referência a isso concurrent_unordered_map objeto.

Comentários

Depois de apagar quaisquer elementos existentes, um vetor simultâneo, operator= copia ou move o conteúdo de _Umap para o vetor simultâneo.

rehash

Reconstrói a tabela de hash.

void rehash(size_type _Buckets);

Parâmetros

_Buckets
O número desejado de buckets.

Comentários

A função de membro altera o número de buckets para ser pelo menos _Buckets e reconstrói a tabela de hash conforme necessário. O número de caçambas deve ser uma potência de 2. Se não for uma potência de 2, será arredondada para a próxima maior potência de 2.

Ele lança uma exceção out_of_range se o número de buckets for inválido (0 ou maior que o número máximo de buckets).

tamanho

Retorna o número de elementos nesse contêiner simultâneo. Este método é seguro para simultaneidade.

size_type size() const;

Valor de retorno

O número de itens no contêiner.

Comentários

Na presença de inserções simultâneas, o número de elementos no contêiner simultâneo pode mudar imediatamente após chamar essa função, antes mesmo que o valor de retorno seja lido.

permuta

Troca o conteúdo de dois objetos concurrent_unordered_map. Este método não é seguro para simultaneidade.

void swap(concurrent_unordered_map& _Umap);

Parâmetros

_Umap
O concurrent_unordered_map objeto com o qual trocar.

unsafe_begin

Retorna um iterador para o primeiro elemento neste contêiner para um bucket específico.

local_iterator unsafe_begin(size_type _Bucket);

const_local_iterator unsafe_begin(size_type _Bucket) const;

Parâmetros

_Bucket
O índice do bucket.

Valor de retorno

Um iterador apontando para o início do bucket.

unsafe_bucket

Retorna o índice de bucket para o qual uma chave específica é mapeada nesse contêiner.

size_type unsafe_bucket(const key_type& KVal) const;

Parâmetros

KVal
A chave do elemento que está sendo pesquisada.

Valor de retorno

O índice de bucket para a chave neste contêiner.

unsafe_bucket_count

Retorna o número atual de buckets neste contêiner.

size_type unsafe_bucket_count() const;

Valor de retorno

O número atual de buckets neste contêiner.

unsafe_bucket_size

Retorna o número de itens em um bucket específico desse contêiner.

size_type unsafe_bucket_size(size_type _Bucket);

Parâmetros

_Bucket
O balde para procurar.

Valor de retorno

O número atual de buckets neste contêiner.

unsafe_cbegin

Retorna um iterador para o primeiro elemento neste contêiner para um bucket específico.

const_local_iterator unsafe_cbegin(size_type _Bucket) const;

Parâmetros

_Bucket
O índice do bucket.

Valor de retorno

Um iterador apontando para o início do bucket.

unsafe_cend

Retorna um iterador para o local que sucede o último elemento em um bucket específico.

const_local_iterator unsafe_cend(size_type _Bucket) const;

Parâmetros

_Bucket
O índice do bucket.

Valor de retorno

Um iterador apontando para o início do bucket.

unsafe_end

Retorna um iterador para o último elemento neste contêiner para um bucket específico.

local_iterator unsafe_end(size_type _Bucket);

const_local_iterator unsafe_end(size_type _Bucket) const;

Parâmetros

_Bucket
O índice do bucket.

Valor de retorno

Um iterador apontando para o final do bucket.

unsafe_erase

Remove elementos do concurrent_unordered_map em posições especificadas. Este método não é seguro para simultaneidade.

iterator unsafe_erase(
    const_iterator _Where);

iterator unsafe_erase(
    const_iterator _Begin,
    const_iterator _End);

size_type unsafe_erase(
    const key_type& KVal);

Parâmetros

_Where
A posição do iterador a ser apagada.

_Begin
A posição do primeiro elemento na gama de elementos a serem apagados.

_End
A posição do primeiro elemento além da gama de elementos a serem apagados.

KVal
O valor-chave a apagar.

Valor de retorno

As duas primeiras funções de membro retornam um iterador que designa o primeiro elemento restante além de quaisquer elementos removidos, ou concurrent_unordered_map::end() se tal elemento não existir. A terceira função de membro retorna o número de elementos removidos.

Comentários

A primeira função de membro remove o elemento da sequência controlada apontada por _Where. A segunda função de membro remove os elementos no intervalo [ _Begin, _End).

A função de terceiro membro remove os elementos no intervalo delimitado por concurrent_unordered_map::equal_range(KVal).

unsafe_max_bucket_count

Retorna o número máximo de buckets neste contêiner.

size_type unsafe_max_bucket_count() const;

Valor de retorno

O número máximo de buckets neste contêiner.

Ver também

simultaneidade Namespace
Contêineres e objetos paralelos