Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A classe concurrent_vector é uma classe de contêiner de sequência que permite acesso aleatório a qualquer elemento. Ela habilita o acréscimo concurrency-safe, o acesso ao elemento, o acesso ao iterador e as operações de passagem do iterador. Aqui, concurrency-safe significa que os ponteiros ou iteradores são sempre válidos. Não é uma garantia de inicialização do elemento ou de uma ordem de passagem específica.
Sintaxe
template<typename T, class _Ax>
class concurrent_vector: protected details::_Allocator_base<T,
_Ax>,
private details::_Concurrent_vector_base_v4;
Parâmetros
T
O tipo de dados dos elementos a serem armazenados no vetor.
_Machado
O tipo que representa o objeto alocador armazenado que encapsula detalhes sobre a alocação e a desalocação de memória do vetor simultâneo. Esse argumento é opcional e o valor padrão é allocator<T>.
Membros
Typedefs públicos
| Nome | Descrição |
|---|---|
allocator_type |
Um tipo que representa a classe do alocador para o vetor simultâneo. |
const_iterator |
Um tipo que fornece um iterador de acesso aleatório que pode ler um elemento const em um vetor simultâneo. |
const_pointer |
Um tipo que fornece um ponteiro para um elemento const em um vetor simultâneo. |
const_reference |
Um tipo que fornece uma referência para um elemento const armazenado em um vetor simultâneo para leitura e execução de operações const. |
const_reverse_iterator |
Um tipo que fornece um iterador de acesso aleatório que pode ler qualquer elemento const no vetor simultâneo. |
difference_type |
Um tipo que fornece a distância com sinal entre dois elementos em um vetor simultâneo. |
iterator |
Um tipo que fornece um iterador de acesso aleatório que pode ler qualquer elemento em um vetor simultâneo. A modificação de um elemento usando o iterador não é concurrency-safe. |
pointer |
Um tipo que fornece um ponteiro para um elemento em um vetor simultâneo. |
reference |
Um tipo que fornece uma referência a um elemento armazenado em um vetor simultâneo. |
reverse_iterator |
Um tipo que fornece um iterador de acesso aleatório que pode ler qualquer elemento em um vetor simultâneo reverso. A modificação de um elemento usando o iterador não é concurrency-safe. |
size_type |
Um tipo que conta o número de elementos em um vetor simultâneo. |
value_type |
Um tipo que representa o tipo de dados armazenados em um vetor simultâneo. |
Construtores públicos
| Nome | Descrição |
|---|---|
| concurrent_vector | Sobrecarregado. Constrói um vetor simultâneo. |
| Destruidor ~concurrent_vector | Apaga todos os elementos e destrói esse vetor simultâneo. |
Métodos públicos
| Nome | Descrição |
|---|---|
| atribuir | Sobrecarregado. Apaga os elementos do vetor simultâneo e atribui a ele _N cópias do _Item ou os valores especificados pelo intervalo de iterador (_Begin, _End). Esse método não é seguro para simultaneidade. |
| no | Sobrecarregado. Fornece acesso ao elemento no índice fornecido no vetor simultâneo. Esse método é concurrency-safe para operações de leitura e, ao mesmo tempo, também aumenta o vetor, desde que você tenha garantido que o valor _Index seja menor que o tamanho do vetor simultâneo. |
| Voltar | Sobrecarregado. Retorna uma referência ou uma referência const ao último elemento no vetor simultâneo. Se o vetor simultâneo estiver vazio, o valor retornado será indefinido. Esse método é seguro para simultaneidade. |
| começar | Sobrecarregado. Retorna um iterador de tipo iterator ou const_iterator para o início do vetor simultâneo. Esse método é seguro para simultaneidade. |
| capacidade | Retorna o tamanho máximo para o qual o vetor simultâneo pode aumentar, sem precisar alocar mais memória. Esse método é seguro para simultaneidade. |
| cbegin | Retorna um iterador de tipo const_iterator para o início do vetor simultâneo. Esse método é seguro para simultaneidade. |
| cend | Retorna um iterador de tipo const_iterator para o final do vetor simultâneo. Esse método é seguro para simultaneidade. |
| claro | Apaga todos os elementos no vetor simultâneo. Esse método não é seguro para simultaneidade. |
| crbegin | Retorna um iterador de tipo const_reverse_iterator para o início do vetor simultâneo. Esse método é seguro para simultaneidade. |
| crend | Retorna um iterador de tipo const_reverse_iterator para o final do vetor simultâneo. Esse método é seguro para simultaneidade. |
| vazio | Testa se o vetor simultâneo está vazio no momento em que esse método é chamado. Esse método é seguro para simultaneidade. |
| fim | Sobrecarregado. Retorna um iterador de tipo iterator ou const_iterator para o final do vetor simultâneo. Esse método é seguro para simultaneidade. |
| frente | Sobrecarregado. Retorna uma referência ou uma referência const ao primeiro elemento no vetor simultâneo. Se o vetor simultâneo estiver vazio, o valor retornado será indefinido. Esse método é seguro para simultaneidade. |
| get_allocator | Retorna uma cópia do alocador usado para construir o vetor simultâneo. Esse método é seguro para simultaneidade. |
| grow_by | Sobrecarregado. Aumenta esse vetor simultâneo em _Delta elementos. Esse método é seguro para simultaneidade. |
| grow_to_at_least | Aumenta esse vetor simultâneo até que ele tenha pelo menos _N elementos. Esse método é seguro para simultaneidade. |
| max_size | Retorna o número máximo de elementos que o vetor simultâneo pode conter. Esse método é seguro para simultaneidade. |
| push_back | Sobrecarregado. Acrescenta o item determinado para o final do vetor simultâneo. Esse método é seguro para simultaneidade. |
| rbegin | Sobrecarregado. Retorna um iterador de tipo reverse_iterator ou const_reverse_iterator para o início do vetor simultâneo. Esse método é seguro para simultaneidade. |
| rasgar | Sobrecarregado. Retorna um iterador de tipo reverse_iterator ou const_reverse_iterator para o final do vetor simultâneo. Esse método é seguro para simultaneidade. |
| de reserva | Aloca espaço suficiente para aumentar o vetor simultâneo para o tamanho _N, sem precisar alocar mais memória posteriormente. Esse método não é seguro para simultaneidade. |
| redimensionar | Sobrecarregado. Altera o tamanho do vetor simultâneo para o tamanho solicitado, excluindo ou adicionando elementos, conforme necessário. Esse método não é seguro para simultaneidade. |
| shrink_to_fit | Compacta a representação interna do vetor simultâneo para reduzir a fragmentação e otimizar o uso da memória. Esse método não é seguro para simultaneidade. |
| tamanho | Retorna o número de elementos no vetor simultâneo. Esse método é seguro para simultaneidade. |
| troca | Troca o conteúdo de dois vetores simultâneos. Esse método não é seguro para simultaneidade. |
Operadores públicos
| Nome | Descrição |
|---|---|
| operador | Sobrecarregado. Fornece acesso ao elemento no índice fornecido no vetor simultâneo. Esse método é concurrency-safe para operações de leitura e, ao mesmo tempo, também aumenta o vetor, desde que você tenha garantido que o valor _Index seja menor que o tamanho do vetor simultâneo. |
| operador = | Sobrecarregado. Atribui o conteúdo de outro objeto concurrent_vector a este. Esse método não é seguro para simultaneidade. |
Comentários
Para obter informações detalhadas sobre a classe concurrent_vector, confira Contêineres e objetos paralelos.
Hierarquia de herança
_Concurrent_vector_base_v4
_Allocator_base
concurrent_vector
Requisitos
Cabeçalho: concurrent_vector.h
Namespace: simultaneidade
atribuir
Apaga os elementos do vetor simultâneo e atribui a ele _N cópias do _Item ou os valores especificados pelo intervalo de iterador (_Begin, _End). Esse método não é seguro para simultaneidade.
void assign(
size_type _N,
const_reference _Item);
template<class _InputIterator>
void assign(_InputIterator _Begin,
_InputIterator _End);
Parâmetros
_InputIterator
O tipo do iterador especificado.
_N
O número de itens a serem copiados para o vetor simultâneo.
_Item
Referência a um valor usado para preencher o vetor simultâneo.
_Começar
Um iterador para o primeiro elemento do intervalo de origem.
_Fim
Um iterador para um elemento após o último no intervalo de origem.
Comentários
assign não é concurrency-safe. Você deve garantir que outros threads não invoquem os métodos no vetor simultâneo, ao chamar esse método.
em
Fornece acesso ao elemento no índice fornecido no vetor simultâneo. Esse método é concurrency-safe para operações de leitura e, ao mesmo tempo, também aumenta o vetor, desde que você tenha garantido que o valor _Index seja menor que o tamanho do vetor simultâneo.
reference at(size_type _Index);
const_reference at(size_type _Index) const;
Parâmetros
_Índice
O índice do elemento a ser recuperado.
Valor de retorno
Uma referência ao item no índice fornecido.
Comentários
Não é possível usar a versão da função at que retorna uma referência não const para gravar simultaneamente no elemento a partir de threads diferentes. Um objeto de sincronização diferente deve ser usado para sincronizar operações simultâneas de leitura e gravação com o mesmo elemento de dados.
O método gera out_of_range, se _Index for maior que ou igual ao tamanho do vetor simultâneo, e range_error, se o índice for para uma parte interrompida do vetor. Para obter detalhes sobre como um vetor pode ser interrompido, confira Contêineres e Objetos Paralelos.
voltar
Retorna uma referência ou uma referência const ao último elemento no vetor simultâneo. Se o vetor simultâneo estiver vazio, o valor retornado será indefinido. Esse método é seguro para simultaneidade.
reference back();
const_reference back() const;
Valor de retorno
Uma referência ou uma referência const ao último elemento no vetor simultâneo.
começar
Retorna um iterador de tipo iterator ou const_iterator para o início do vetor simultâneo. Esse método é seguro para simultaneidade.
iterator begin();
const_iterator begin() const;
Valor de retorno
Um iterador de tipo iterator ou const_iterator para o início do vetor simultâneo.
capacidade
Retorna o tamanho máximo para o qual o vetor simultâneo pode aumentar, sem precisar alocar mais memória. Esse método é seguro para simultaneidade.
size_type capacity() const;
Valor de retorno
O tamanho máximo para o qual o vetor simultâneo pode aumentar, sem precisar alocar mais memória.
Comentários
Ao contrário de uma Biblioteca Standard C++ vector, um objeto concurrent_vector não moverá os elementos existentes, se alocar mais memória.
cbegin
Retorna um iterador de tipo const_iterator para o início do vetor simultâneo. Esse método é seguro para simultaneidade.
const_iterator cbegin() const;
Valor de retorno
Um iterador de tipo const_iterator para o início do vetor simultâneo.
cend
Retorna um iterador de tipo const_iterator para o final do vetor simultâneo. Esse método é seguro para simultaneidade.
const_iterator cend() const;
Valor de retorno
Um iterador de tipo const_iterator para o final do vetor simultâneo.
claro
Apaga todos os elementos no vetor simultâneo. Esse método não é seguro para simultaneidade.
void clear();
Comentários
clear não é concurrency-safe. Você deve garantir que outros threads não invoquem os métodos no vetor simultâneo, ao chamar esse método.
clear não libera as matrizes internas. Para liberar as matrizes internas, chame a função shrink_to_fit após clear.
concurrent_vector
Constrói um vetor simultâneo.
explicit concurrent_vector(
const allocator_type& _Al = allocator_type());
concurrent_vector(
const concurrent_vector& _Vector);
template<class M>
concurrent_vector(
const concurrent_vector<T,
M>& _Vector,
const allocator_type& _Al = allocator_type());
concurrent_vector(
concurrent_vector&& _Vector);
explicit concurrent_vector(
size_type _N);
concurrent_vector(
size_type _N,
const_reference _Item,
const allocator_type& _Al = allocator_type());
template<class _InputIterator>
concurrent_vector(_InputIterator _Begin,
_InputIterator _End,
const allocator_type& _Al = allocator_type());
Parâmetros
M
O tipo de alocador do vetor de origem.
_InputIterator
O tipo do iterador de entrada.
_Al
A classe de alocador a ser usada com esse objeto.
_Vetor
O objeto concurrent_vector de origem do qual copiar ou mover elementos.
_N
A capacidade inicial do objeto concurrent_vector.
_Item
O valor dos elementos no objeto construído.
_Começar
A posição do primeiro elemento no intervalo de elementos a ser copiado.
_Fim
A posição do primeiro elemento após o intervalo de elementos a ser copiado.
Comentários
Todos os construtores armazenam um objeto alocador _Al e iniciam o vetor.
O primeiro construtor especifica um vetor inicial vazio e especifica explicitamente o tipo de alocador. a ser usado.
O segundo e o terceiro construtores especificam uma cópia do vetor simultâneo _Vector.
O quarto construtor especifica uma movimentação do vetor simultâneo _Vector.
O quinto construtor especifica uma repetição de um número especificado (_N) de elementos do valor padrão para a classe T.
O sexto construtor especifica uma repetição de (_N) elementos de valor _Item.
O último construtor especifica valores fornecidos pelo intervalo do iterador (_Begin, _End).
~ concurrent_vector
Apaga todos os elementos e destrói esse vetor simultâneo.
~concurrent_vector();
crbegin
Retorna um iterador de tipo const_reverse_iterator para o início do vetor simultâneo. Esse método é seguro para simultaneidade.
const_reverse_iterator crbegin() const;
Valor de retorno
Um iterador de tipo const_reverse_iterator para o início do vetor simultâneo.
crend
Retorna um iterador de tipo const_reverse_iterator para o final do vetor simultâneo. Esse método é seguro para simultaneidade.
const_reverse_iterator crend() const;
Valor de retorno
Um iterador de tipo const_reverse_iterator para o final do vetor simultâneo.
vazio
Testa se o vetor simultâneo está vazio no momento em que esse método é chamado. Esse método é seguro para simultaneidade.
bool empty() const;
Valor de retorno
true, se o vetor estava vazio no momento em que a função foi chamada. Caso contrário, false.
término
Retorna um iterador de tipo iterator ou const_iterator para o final do vetor simultâneo. Esse método é seguro para simultaneidade.
iterator end();
const_iterator end() const;
Valor de retorno
Um iterador de tipo iterator ou const_iterator para o final do vetor simultâneo.
frente
Retorna uma referência ou uma referência const ao primeiro elemento no vetor simultâneo. Se o vetor simultâneo estiver vazio, o valor retornado será indefinido. Esse método é seguro para simultaneidade.
reference front();
const_reference front() const;
Valor de retorno
Uma referência ou uma referência const ao primeiro elemento no vetor simultâneo.
get_allocator
Retorna uma cópia do alocador usado para construir o vetor simultâneo. Esse método é seguro para simultaneidade.
allocator_type get_allocator() const;
Valor de retorno
Uma cópia do alocador usado para construir o objeto concurrent_vector.
grow_by
Aumenta esse vetor simultâneo em _Delta elementos. Esse método é seguro para simultaneidade.
iterator grow_by(
size_type _Delta);
iterator grow_by(
size_type _Delta,
const_reference _Item);
Parâmetros
_Delta
O número de elementos a serem acrescentados ao objeto.
_Item
O valor com o qual os novos elementos devem ser inicializados.
Valor de retorno
Um iterador para o primeiro item acrescentado.
Comentários
Se _Item não for especificado, os novos elementos serão construídos por padrão.
grow_to_at_least
Aumenta esse vetor simultâneo até que ele tenha pelo menos _N elementos. Esse método é seguro para simultaneidade.
iterator grow_to_at_least(size_type _N);
Parâmetros
_N
O novo tamanho mínimo para o objeto concurrent_vector.
Valor de retorno
Um iterador que aponta para o início da sequência acrescentada ou para o elemento no índice _N, se nenhum elemento tiver sido acrescentado.
max_size
Retorna o número máximo de elementos que o vetor simultâneo pode conter. Esse método é seguro para simultaneidade.
size_type max_size() const;
Valor de retorno
O número máximo de elementos que o objeto concurrent_vector pode conter.
operator=
Atribui o conteúdo de outro objeto concurrent_vector a este. Esse método não é seguro para simultaneidade.
concurrent_vector& operator= (
const concurrent_vector& _Vector);
template<class M>
concurrent_vector& operator= (
const concurrent_vector<T, M>& _Vector);
concurrent_vector& operator= (
concurrent_vector&& _Vector);
Parâmetros
M
O tipo de alocador do vetor de origem.
_Vetor
O objeto de origem concurrent_vector .
Valor de retorno
Uma referência a esse objeto concurrent_vector.
operador
Fornece acesso ao elemento no índice fornecido no vetor simultâneo. Esse método é concurrency-safe para operações de leitura e, ao mesmo tempo, também aumenta o vetor, desde que você tenha garantido que o valor _Index seja menor que o tamanho do vetor simultâneo.
reference operator[](size_type _index);
const_reference operator[](size_type _index) const;
Parâmetros
_Índice
O índice do elemento a ser recuperado.
Valor de retorno
Uma referência ao item no índice fornecido.
Comentários
Não é possível usar a versão de operator [] que retorna uma referência não const para gravar simultaneamente no elemento a partir de threads diferentes. Um objeto de sincronização diferente deve ser usado para sincronizar operações simultâneas de leitura e gravação com o mesmo elemento de dados.
Nenhuma verificação de limites é executada para garantir que _Index seja um índice válido no vetor simultâneo.
push_back
Acrescenta o item determinado para o final do vetor simultâneo. Esse método é seguro para simultaneidade.
iterator push_back(const_reference _Item);
iterator push_back(T&& _Item);
Parâmetros
_Item
O valor a ser acrescentado.
Valor de retorno
Um iterador para o item acrescentado.
rbegin
Retorna um iterador de tipo reverse_iterator ou const_reverse_iterator para o início do vetor simultâneo. Esse método é seguro para simultaneidade.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Valor de retorno
Um iterador de tipo reverse_iterator ou const_reverse_iterator para o início do vetor simultâneo.
rasgar
Retorna um iterador de tipo reverse_iterator ou const_reverse_iterator para o final do vetor simultâneo. Esse método é seguro para simultaneidade.
reverse_iterator rend();
const_reverse_iterator rend() const;
Valor de retorno
Um iterador de tipo reverse_iterator ou const_reverse_iterator para o final do vetor simultâneo.
reservar
Aloca espaço suficiente para aumentar o vetor simultâneo para o tamanho _N, sem precisar alocar mais memória posteriormente. Esse método não é seguro para simultaneidade.
void reserve(size_type _N);
Parâmetros
_N
O número de elementos para os quais o espaço deve ser reservado.
Comentários
reserve não é concurrency-safe. Você deve garantir que outros threads não invoquem os métodos no vetor simultâneo, ao chamar esse método. A capacidade do vetor simultâneo após o retorno do método pode ser maior do que a reserva solicitada.
redimensionar
Altera o tamanho do vetor simultâneo para o tamanho solicitado, excluindo ou adicionando elementos, conforme necessário. Esse método não é seguro para simultaneidade.
void resize(
size_type _N);
void resize(
size_type _N,
const T& val);
Parâmetros
_N
O novo tamanho do concurrent_vector.
Val
O valor de novos elementos adicionados ao vetor, caso o novo tamanho seja maior que o tamanho original. Se o valor for omitido, os novos objetos receberão o valor padrão para o tipo.
Comentários
Se o tamanho do contêiner for menor que o tamanho solicitado, serão adicionados os elementos ao vetor até que ele atinja o tamanho solicitado. Se o tamanho do contêiner for maior que o tamanho solicitado, os elementos mais próximos do final do contêiner são excluídos até o contêiner chegar ao tamanho _N. Se o tamanho atual do contêiner for igual ao tamanho solicitado, nenhuma ação será realizada.
resize não é concurrency-safe. Você deve garantir que outros threads não invoquem os métodos no vetor simultâneo, ao chamar esse método.
shrink_to_fit
Compacta a representação interna do vetor simultâneo para reduzir a fragmentação e otimizar o uso da memória. Esse método não é seguro para simultaneidade.
void shrink_to_fit();
Comentários
Esse método alocará internamente os elementos de movimentação de memória, invalidando todos os iteradores.
shrink_to_fit não é concurrency-safe. Você deve garantir que outros threads não invoquem os métodos no vetor simultâneo, ao chamar essa função.
tamanho
Retorna o número de elementos no vetor simultâneo. Esse método é seguro para simultaneidade.
size_type size() const;
Valor de retorno
O número de elementos no objeto concurrent_vector.
Comentários
O tamanho retornado é garantido para incluir todos os elementos acrescentados por chamadas à função push_back ou as operações de crescimento que foram concluídas antes de invocar esse método. No entanto, também pode incluir elementos alocados, mas ainda em construção por chamadas simultâneas a qualquer um dos métodos de crescimento.
troca
Troca o conteúdo de dois vetores simultâneos. Esse método não é seguro para simultaneidade.
void swap(concurrent_vector& _Vector);
Parâmetros
_Vetor
O objeto concurrent_vector com o qual trocar conteúdo.
Confira também
Namespace de simultaneidade
Contêineres e objetos em paralelo