Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.