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 concurrent_vector classe é uma classe de contêiner de sequência que permite acesso aleatório a qualquer elemento. Ele permite operações de acréscimo seguro para simultaneidade, acesso a elementos, acesso 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 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.
_Ax
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 é allocator<T>.
Membros
Typedefs Públicos
| Nome | Descrição |
|---|---|
allocator_type |
Um tipo que representa a classe de alocador para o vetor simultâneo. |
const_iterator |
Um tipo que fornece um iterador de acesso aleatório que pode ler um const elemento em um vetor simultâneo. |
const_pointer |
Um tipo que fornece um ponteiro para um const elemento em um vetor simultâneo. |
const_reference |
Um tipo que fornece uma referência a um const elemento armazenado em um vetor simultâneo para ler e executar const operações. |
const_reverse_iterator |
Um tipo que fornece um iterador de acesso aleatório que pode ler qualquer const elemento no vetor simultâneo. |
difference_type |
Um tipo que fornece a distância assinada 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 é segura para simultaneidade. |
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 invertido. A modificação de um elemento usando o iterador não é segura para simultaneidade. |
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. |
| ~concurrent_vetor Destruidor | Apaga todos os elementos e destrói este 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 de , ou valores especificados pelo intervalo do _Itemiterador [ _Begin, _End). Este método não é seguro para simultaneidade. |
| na | Sobrecarregado. Fornece acesso ao elemento no índice dado no vetor simultâneo. Esse método é seguro para simultaneidade para operações de leitura e também durante o crescimento do vetor, desde que você tenha garantido que o valor _Index seja menor do que o tamanho do vetor simultâneo. |
| Voltar | Sobrecarregado. Retorna uma referência ou uma const referência ao último elemento no vetor simultâneo. Se o vetor simultâneo estiver vazio, o valor de retorno será indefinido. Este método é seguro para simultaneidade. |
| começar | Sobrecarregado. Retorna um iterador do tipo iterator ou const_iterator para o início do vetor simultâneo. Este método é seguro para simultaneidade. |
| capacidade | Retorna o tamanho máximo para o qual o vetor simultâneo pode crescer sem ter que alocar mais memória. Este método é seguro para simultaneidade. |
| Cbegin | Retorna um iterador do tipo const_iterator para o início do vetor simultâneo. Este método é seguro para simultaneidade. |
| Curva | Retorna um iterador do tipo const_iterator para o final do vetor simultâneo. Este método é seguro para simultaneidade. |
| claro | Apaga todos os elementos do vetor simultâneo. Este método não é seguro para simultaneidade. |
| Crstart | Retorna um iterador do tipo const_reverse_iterator para o início do vetor simultâneo. Este método é seguro para simultaneidade. |
| Crend | Retorna um iterador do tipo const_reverse_iterator para o final do vetor simultâneo. Este método é seguro para simultaneidade. |
| vazio | Testa se o vetor simultâneo está vazio no momento em que este método é chamado. Este método é seguro para simultaneidade. |
| fim | Sobrecarregado. Retorna um iterador do tipo iterator ou const_iterator para o final do vetor simultâneo. Este método é seguro para simultaneidade. |
| frente | Sobrecarregado. Retorna uma referência ou uma const referência ao primeiro elemento no vetor simultâneo. Se o vetor simultâneo estiver vazio, o valor de retorno será indefinido. Este método é seguro para simultaneidade. |
| get_allocator | Retorna uma cópia do alocador usado para construir o vetor simultâneo. Este método é seguro para simultaneidade. |
| grow_by | Sobrecarregado. Cresce este vetor simultâneo por _Delta elementos. Este método é seguro para simultaneidade. |
| grow_to_at_least | Cresce este vetor simultâneo até que ele tenha pelo menos _N elementos. Este método é seguro para simultaneidade. |
| max_size | Retorna o número máximo de elementos que o vetor simultâneo pode conter. Este método é seguro para simultaneidade. |
| push_back | Sobrecarregado. Acrescenta o item dado ao final do vetor simultâneo. Este método é seguro para simultaneidade. |
| rcomeçar | Sobrecarregado. Retorna um iterador do tipo reverse_iterator ou const_reverse_iterator para o início do vetor simultâneo. Este método é seguro para simultaneidade. |
| rend | Sobrecarregado. Retorna um iterador do tipo reverse_iterator ou const_reverse_iterator para o final do vetor simultâneo. Este método é seguro para simultaneidade. |
| reserva | Aloca espaço suficiente para aumentar o vetor simultâneo para o tamanho _N sem ter que alocar mais memória mais tarde. Este 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. Este 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. Este método não é seguro para simultaneidade. |
| tamanho | Retorna o número de elementos no vetor simultâneo. Este método é seguro para simultaneidade. |
| trocar | Troca o conteúdo de dois vetores simultâneos. Este método não é seguro para simultaneidade. |
Operadores Públicos
| Nome | Descrição |
|---|---|
| operador[] | Sobrecarregado. Fornece acesso ao elemento no índice dado no vetor simultâneo. Esse método é seguro para simultaneidade para operações de leitura e também durante o crescimento do vetor, desde que você tenha garantido que o valor _Index é menor do que o tamanho do vetor simultâneo. |
| operador= | Sobrecarregado. Atribui o conteúdo de outro concurrent_vector objetar a este. Este método não é seguro para simultaneidade. |
Observações
Para obter informações detalhadas sobre a classe concurrent_vector, consulte Parallel Containers and Objects.
Hierarquia de herança
_Concurrent_vector_base_v4
_Allocator_base
concurrent_vector
Requerimentos
Cabeçalho: concurrent_vetor.h
Namespace: simultaneidade
atribuir
Apaga os elementos do vetor simultâneo e atribui a ele _N cópias de , ou valores especificados pelo intervalo do _Itemiterador [ _Begin, _End). Este 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.
_Begin
Um iterador para o primeiro elemento do intervalo de origem.
_End
Um iterador para um passado o último elemento do intervalo de origem.
Observações
assign não é seguro para simultaneidade. Você deve garantir que nenhum outro thread esteja invocando métodos no vetor simultâneo quando você chamar esse método.
em
Fornece acesso ao elemento no índice dado no vetor simultâneo. Esse método é seguro para simultaneidade para operações de leitura e também durante o crescimento do vetor, desde que você tenha garantido que o valor _Index seja menor do que o tamanho do vetor simultâneo.
reference at(size_type _Index);
const_reference at(size_type _Index) const;
Parâmetros
_Index
O índice do elemento a ser recuperado.
Valor de retorno
Uma referência ao item no índice fornecido.
Observações
A versão da função at que retorna uma não-referência const não pode ser usada 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 lança out_of_range se _Index é maior ou igual ao tamanho do vetor simultâneo e range_error se o índice é para uma porção quebrada do vetor. Para obter detalhes sobre como um vetor pode ser quebrado, consulte Contêineres e objetos paralelos.
Voltar
Retorna uma referência ou uma const referência ao último elemento no vetor simultâneo. Se o vetor simultâneo estiver vazio, o valor de retorno será indefinido. Este método é seguro para simultaneidade.
reference back();
const_reference back() const;
Valor de retorno
Uma referência ou uma const referência ao último elemento no vetor simultâneo.
começar
Retorna um iterador do tipo iterator ou const_iterator para o início do vetor simultâneo. Este método é seguro para simultaneidade.
iterator begin();
const_iterator begin() const;
Valor de retorno
Um iterador do 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 crescer sem ter que alocar mais memória. Este método é seguro para simultaneidade.
size_type capacity() const;
Valor de retorno
O tamanho máximo para o qual o vetor simultâneo pode crescer sem ter que alocar mais memória.
Observações
Ao contrário de uma biblioteca vectorpadrão C++, um concurrent_vector objeto não move elementos existentes se alocar mais memória.
Cbegin
Retorna um iterador do tipo const_iterator para o início do vetor simultâneo. Este método é seguro para simultaneidade.
const_iterator cbegin() const;
Valor de retorno
Um iterador do tipo const_iterator para o início do vetor simultâneo.
Curva
Retorna um iterador do tipo const_iterator para o final do vetor simultâneo. Este método é seguro para simultaneidade.
const_iterator cend() const;
Valor de retorno
Um iterador do tipo const_iterator até o final do vetor simultâneo.
limpar
Apaga todos os elementos do vetor simultâneo. Este método não é seguro para simultaneidade.
void clear();
Observações
clear não é seguro para simultaneidade. Você deve garantir que nenhum outro thread esteja invocando métodos no vetor simultâneo quando você chamar esse método.
clear não libera matrizes internas. Para liberar 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.
_Vector
A origem concurrent_vector objeto do qual copiar ou mover elementos.
_N
A capacidade inicial do concurrent_vector objeto.
_Item
O valor dos elementos no objeto construído.
_Begin
Posição do primeiro elemento na gama de elementos a copiar.
_End
Posição do primeiro elemento para além da gama de elementos a copiar.
Observações
Todos os construtores armazenam um objeto _Al alocador e inicializam o vetor.
O primeiro construtor especifica um vetor inicial vazio e especifica explicitamente o tipo de alocador. a utilizar.
O segundo e terceiro construtores especificam uma cópia do vetor _Vectorsimultâneo .
O quarto construtor especifica um movimento do vetor _Vectorsimultâneo .
O quinto construtor especifica uma repetição de um número especificado (_N) de elementos do valor padrão para 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_vetor
Apaga todos os elementos e destrói este vetor simultâneo.
~concurrent_vector();
Crstart
Retorna um iterador do tipo const_reverse_iterator para o início do vetor simultâneo. Este método é seguro para simultaneidade.
const_reverse_iterator crbegin() const;
Valor de retorno
Um iterador do tipo const_reverse_iterator para o início do vetor simultâneo.
Crend
Retorna um iterador do tipo const_reverse_iterator para o final do vetor simultâneo. Este método é seguro para simultaneidade.
const_reverse_iterator crend() const;
Valor de retorno
Um iterador do tipo const_reverse_iterator até o final do vetor simultâneo.
vazio
Testa se o vetor simultâneo está vazio no momento em que este método é chamado. Este 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, false caso contrário.
fim
Retorna um iterador do tipo iterator ou const_iterator para o final do vetor simultâneo. Este método é seguro para simultaneidade.
iterator end();
const_iterator end() const;
Valor de retorno
Um iterador do tipo iterator ou const_iterator até o final do vetor simultâneo.
frente
Retorna uma referência ou uma const referência ao primeiro elemento no vetor simultâneo. Se o vetor simultâneo estiver vazio, o valor de retorno será indefinido. Este método é seguro para simultaneidade.
reference front();
const_reference front() const;
Valor de retorno
Uma referência ou uma const referência ao primeiro elemento no vetor simultâneo.
get_allocator
Retorna uma cópia do alocador usado para construir o vetor simultâneo. Este método é seguro para simultaneidade.
allocator_type get_allocator() const;
Valor de retorno
Uma cópia do alocador usado para construir o concurrent_vector objeto.
grow_by
Cresce este vetor simultâneo por _Delta elementos. Este 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 anexados ao objeto.
_Item
O valor com o qual inicializar os novos elementos.
Valor de retorno
Um iterador para o primeiro item anexado.
Observações
Se _Item não for especificado, os novos elementos serão construídos por padrão.
grow_to_at_least
Cresce este vetor simultâneo até que ele tenha pelo menos _N elementos. Este método é seguro para simultaneidade.
iterator grow_to_at_least(size_type _N);
Parâmetros
_N
O novo tamanho mínimo para o concurrent_vector objeto.
Valor de retorno
Um iterador que aponta para o início da sequência anexada ou para o elemento no índice _N se nenhum elemento foi acrescentado.
tamanho_máximo
Retorna o número máximo de elementos que o vetor simultâneo pode conter. Este método é seguro para simultaneidade.
size_type max_size() const;
Valor de retorno
O número máximo de elementos que o concurrent_vector objeto pode conter.
operador=
Atribui o conteúdo de outro concurrent_vector objetar a este. Este 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.
_Vector
A origem concurrent_vector objeto.
Valor de retorno
Uma referência a isso concurrent_vector objeto.
operador[]
Fornece acesso ao elemento no índice dado no vetor simultâneo. Esse método é seguro para simultaneidade para operações de leitura e também durante o crescimento do vetor, desde que você tenha garantido que o valor _Index é menor do que o tamanho do vetor simultâneo.
reference operator[](size_type _index);
const_reference operator[](size_type _index) const;
Parâmetros
_Index
O índice do elemento a ser recuperado.
Valor de retorno
Uma referência ao item no índice fornecido.
Observações
A versão que operator [] retorna uma não-referência const não pode ser usada 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 dado ao final do vetor simultâneo. Este 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 anexado.
rcomeçar
Retorna um iterador do tipo reverse_iterator ou const_reverse_iterator para o início do vetor simultâneo. Este método é seguro para simultaneidade.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Valor de retorno
Um iterador do tipo reverse_iterator ou const_reverse_iterator para o início do vetor simultâneo.
rend
Retorna um iterador do tipo reverse_iterator ou const_reverse_iterator para o final do vetor simultâneo. Este método é seguro para simultaneidade.
reverse_iterator rend();
const_reverse_iterator rend() const;
Valor de retorno
Um iterador do tipo reverse_iterator ou const_reverse_iterator até o final do vetor simultâneo.
Reservar agora
Aloca espaço suficiente para aumentar o vetor simultâneo para o tamanho _N sem ter que alocar mais memória mais tarde. Este método não é seguro para simultaneidade.
void reserve(size_type _N);
Parâmetros
_N
O número de elementos para os quais reservar espaço.
Observações
reserve não é seguro para simultaneidade. Você deve garantir que nenhum outro thread esteja invocando métodos no vetor simultâneo quando você 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. Este 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_vetor.
Val
O valor de novos elementos adicionados ao vetor se o novo tamanho for maior do que o tamanho original. Se o valor for omitido, os novos objetos receberão o valor padrão para seu tipo.
Observações
Se o tamanho do contêiner for menor que o tamanho solicitado, os elementos serão adicionados ao vetor até que ele atinja o tamanho solicitado. Se o tamanho do contêiner for maior do que o tamanho solicitado, os elementos mais próximos do final do contêiner serão excluídos até que o contêiner atinja o tamanho _N. Se o tamanho atual do contêiner for o mesmo que o tamanho solicitado, nenhuma ação será executada.
resize não é seguro para simultaneidade. Você deve garantir que nenhum outro thread esteja invocando métodos no vetor simultâneo quando você 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. Este método não é seguro para simultaneidade.
void shrink_to_fit();
Observações
Esse método irá realocar internamente os elementos de movimentação de memória, invalidando todos os iteradores.
shrink_to_fit não é seguro para simultaneidade. Você deve garantir que nenhum outro thread esteja invocando métodos no vetor simultâneo quando você chamar essa função.
tamanho
Retorna o número de elementos no vetor simultâneo. Este método é seguro para simultaneidade.
size_type size() const;
Valor de retorno
O número de elementos neste concurrent_vector objeto.
Observações
O tamanho retornado é garantido para incluir todos os elementos anexados por chamadas para a função push_back, ou operações de crescimento que foram concluídas antes de invocar esse método. No entanto, também pode incluir elementos que estão alocados, mas ainda em construção, por chamadas simultâneas para qualquer um dos métodos de crescimento.
permuta
Troca o conteúdo de dois vetores simultâneos. Este método não é seguro para simultaneidade.
void swap(concurrent_vector& _Vector);
Parâmetros
_Vector
O concurrent_vector objeto com o qual trocar conteúdo.