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_multimap é 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 forma a permitir 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_multimap : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K, _Element_type, details::_Hash_compare<K, _Hasher, key_equality>, _Allocator_type, true>>;
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 alocador armazenado que encapsula detalhes sobre a alocação e desalocação de memória para o vetor 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_multimap | Sobrecarregado. Constrói um multimapa simultâneo não ordenado. |
Métodos Públicos
| Designação | Descrição |
|---|---|
| hash_function | Retorna o objeto de função hash armazenado. |
| inserir | Sobrecarregado. Adiciona elementos ao objeto concurrent_unordered_multimap. |
| key_eq | Retorna o objeto da função de comparação de igualdade armazenada. |
| trocar | Troca o conteúdo de dois objetos concurrent_unordered_multimap. Este método não é seguro para simultaneidade. |
| unsafe_erase | Sobrecarregado. Remove elementos do concurrent_unordered_multimap em posições especificadas. Este método não é seguro para simultaneidade. |
Operadores Públicos
| Designação | Descrição |
|---|---|
| operador= | Sobrecarregado. Atribui o conteúdo de outro concurrent_unordered_multimap objetar a este. Este método não é seguro para simultaneidade. |
Comentários
Para obter informações detalhadas sobre a classe concurrent_unordered_multimap, consulte Parallel Containers and Objects.
Hierarquia de herança
_Traits
_Concurrent_hash
concurrent_unordered_multimap
Requerimentos
cabeçalho: concurrent_unordered_map.h
Namespace: simultaneidade
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_multimap
Constrói um multimapa simultâneo não ordenado.
explicit concurrent_unordered_multimap(
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_multimap(
const allocator_type& _Allocator);
template <typename _Iterator>
concurrent_unordered_multimap(_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_multimap(
const concurrent_unordered_multimap& _Umap);
concurrent_unordered_multimap(
const concurrent_unordered_multimap& _Umap,
const allocator_type& _Allocator);
concurrent_unordered_multimap(
concurrent_unordered_multimap&& _Umap);
Parâmetros
_Iterator
O tipo do iterador de entrada.
_Number_of_buckets
O número inicial de buckets para este multimapa não ordenado.
_Hasher
A função hash para este multimapa não ordenado.
key_equality
A função de comparação de igualdade para este multimapa não ordenado.
_Allocator
O alocador para este multimapa 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_multimap objeto do qual copiar elementos.
Comentários
Todos os construtores armazenam um objeto alocador _Allocator e inicializam o multimapa não ordenado.
O primeiro construtor especifica um multimapa 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 multimapa 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 _Umapmultimapa não ordenado simultâneo .
O último construtor especifica um movimento do _Umapmultimapa não ordenado simultâneo .
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
Retorna 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_multimap.
iterator 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>
iterator 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 iterador apontando para o local de inserção.
Comentários
A primeira função de membro insere o elemento value na sequência controlada e, em seguida, retorna o iterador que designa o elemento inserido.
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
Retorna 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=
Atribui o conteúdo de outro concurrent_unordered_multimap objetar a este. Este método não é seguro para simultaneidade.
concurrent_unordered_multimap& operator= (const concurrent_unordered_multimap& _Umap);
concurrent_unordered_multimap& operator= (concurrent_unordered_multimap&& _Umap);
Parâmetros
_Umap
A origem concurrent_unordered_multimap objeto.
Valor de retorno
Uma referência a isso concurrent_unordered_multimap objeto.
Comentários
Depois de apagar quaisquer elementos existentes em um multimapa não ordenado simultâneo, operator= copia ou move o conteúdo de _Umap para o multimapa não ordenado 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_multimap. Este método não é seguro para simultaneidade.
void swap(concurrent_unordered_multimap& _Umap);
Parâmetros
_Umap
O concurrent_unordered_multimap 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_multimap em posições especificadas. Este método não é seguro para simultaneidade.
iterator unsafe_erase(
const_iterator _Where);
size_type unsafe_erase(
const key_type& KVal);
iterator unsafe_erase(
const_iterator first,
const_iterator last);
Parâmetros
_Where
A posição do iterador a ser apagada.
KVal
O valor-chave a apagar.
primeira
últimos
Iteradores.
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_multimap::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_multimap::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.