Classe move_iterator
O modelo de classe move_iterator
é um wrapper para um iterador. O move_iterator apresenta o mesmo comportamento do iterador que ele encapsula (armazena), exceto pelo fato de que transforma o operador de desreferência do iterador armazenado em uma referência rvalue, transformando uma cópia em uma movimentação. Para obter mais informações sobre rvalues, consulte Declarador de referência Rvalue: &&.
Sintaxe
class move_iterator;
Comentários
O modelo de classe descreve um objeto que se comporta como um iterador, exceto quando desreferenciado. Ela armazena um iterador de acesso aleatório do tipo Iterator
, acessado pela função membro base()
. Todas as operações em um move_iterator
são executadas diretamente no iterador armazenado, exceto pelo fato de que o resultado de operator*
é implicitamente convertido em value_type&&
para criar uma referência rvalue.
Um move_iterator
pode ser capaz de operações que não são definidas pelo iterador encapsulado. Essas operações não devem ser usadas.
Construtores
Construtor | Descrição |
---|---|
move_iterator | O construtor para objetos do tipo move_iterator . |
Typedefs
Nome do tipo | Descrição |
---|---|
iterator_type | Um sinônimo para o parâmetro de modelo RandomIterator . |
iterator_category | Um sinônimo para a expressão typename mais longa do mesmo nome, iterator_category identifica as habilidades gerais do iterador. |
value_type | Um sinônimo para a expressão typename mais longa do mesmo nome, value_type descreve de qual tipo são os elementos do iterador. |
difference_type | Um sinônimo para uma expressão typename mais longa do mesmo nome, difference_type descreve o tipo integral exigido para expressar valores de diferença entre elementos. |
pointer | Um sinônimo para o parâmetro de modelo RandomIterator . |
referência | Um sinônimo para a referência rvalue value_type&& . |
Funções de membro
Função de membro | Descrição |
---|---|
base | A função membro retorna o iterador armazenado encapsulado por esse move_iterator . |
Operadores
Operador | Descrição |
---|---|
move_iterator::operator* | Retorna (reference)*base() . |
move_iterator::operator++ | Incrementa o iterador armazenado. O comportamento exato depende do tipo de operação: pré-incremento ou pós-incremento. |
move_iterator::operator-- | Decrementa o iterador armazenado. O comportamento exato depende do tipo de operação: pré-decremento ou pós-decremento. |
move_iterator::operator-> |
Retorna &**this . |
move_iterator::operator- | Retorna move_iterator(*this) -= subtraindo primeiro o valor do lado direito da posição atual. |
move_iterator::operator[] | Retorna (reference)*(*this + off) . Permite especificar um deslocamento da base atual para obter o valor nessa posição. |
move_iterator::operator+ | Retorna move_iterator(*this) += do valor. Permite adicionar um deslocamento à base para obter o valor nessa posição. |
move_iterator::operator+= | Adiciona o valor do lado direito ao iterador armazenado e retorna *this . |
move_iterator::operator-= | Subtrai o valor do lado direito do iterador armazenado e retorna *this . |
Requisitos
Cabeçalho:<iterator>
Namespace: std
move_iterator::base
Retorna o iterador armazenado para este move_iterator
.
RandomIterator base() const;
Comentários
A função membro retorna o iterador armazenado.
move_iterator::difference_type
O tipo difference_type
é baseado move_iterator
typedef
na característica difference_type
do iterador e pode ser usado de forma intercambiável com ela.
typedef typename iterator_traits<RandomIterator>::difference_type difference_type;
Comentários
O tipo é um sinônimo para a característica do iterador typename iterator_traits<RandomIterator>::pointer
.
move_iterator::iterator_category
O tipo iterator_category
é baseado move_iterator
typedef
na característica iterator_category
do iterador e pode ser usado de forma intercambiável com ela.
typedef typename iterator_traits<RandomIterator>::iterator_category iterator_category;
Comentários
O tipo é um sinônimo para a característica do iterador typename iterator_traits<RandomIterator>::iterator_category
.
move_iterator::iterator_type
O tipo iterator_type
é baseado no parâmetro de modelo RandomIterator
para o modelo de classe move_iterator
e pode ser usado alternadamente em seu lugar.
typedef RandomIterator iterator_type;
Comentários
O tipo é um sinônimo do parâmetro de modeloRandomIterator
.
move_iterator::move_iterator
Constrói um iterador de movimentação. Usa o parâmetro como o iterador armazenado.
move_iterator();
explicit move_iterator(RandomIterator right);
template <class Type>
move_iterator(const move_iterator<Type>& right);
Parâmetros
direita
O iterador a ser usado como o iterador armazenado.
Comentários
O primeiro construtor inicializa o iterador armazenado com o construtor padrão. Os construtores restantes inicializam o iterador armazenado com base.base()
.
move_iterator::operator+=
Adiciona um deslocamento ao iterador armazenado, para que o iterador armazenado aponte para o elemento no novo local atual. O operador move então o novo elemento atual.
move_iterator& operator+=(difference_type _Off);
Parâmetros
_Off
Um deslocamento para adicionar à posição atual para determinar a nova posição atual.
Valor de retorno
Retorna o novo elemento atual.
Comentários
O operador adiciona _Off ao iterador armazenado. Em seguida, retorna *this
.
move_iterator::operator-=
Move entre um número especificado de elementos anteriores. Este operador subtrai um deslocamento do iterador armazenado.
move_iterator& operator-=(difference_type _Off);
Parâmetros
Comentários
O operador avalia *this += -_Off
. Em seguida, retorna *this
.
move_iterator::operator++
Incrementa o iterador armazenado que pertence a este move_iterator
. O elemento atual é acessado pelo operador pós-incremento. O próximo elemento é acessado pelo operador pré-incremento.
move_iterator& operator++();
move_iterator operator++(int);
Parâmetros
Comentários
O primeiro operador (pré-incremento) incrementa o iterador armazenado. Em seguida, retorna *this
.
O segundo operador (pós-incremento) faz uma cópia do *this
, avalia ++*this
. E retorna a cópia.
move_iterator::operator+
Retorna a posição do iterador avançada por qualquer número de elementos.
move_iterator operator+(difference_type _Off) const;
Parâmetros
Comentários
O operador retorna move_iterator(*this) +=
_Off
.
move_iterator::operator[]
Permite o acesso de índice de matriz a elementos em uma série do move iterator
.
reference operator[](difference_type _Off) const;
Parâmetros
Comentários
O operador retorna (reference)*(*this + _Off)
.
move_iterator::operator--
Os operadores de membro pré e pós-incremento realizam uma diminuição no iterador armazenado.
move_iterator& operator--();
move_iterator operator--();
Parâmetros
Comentários
O primeiro operador de membro (pré-decremento) diminui o iterador armazenado. Em seguida, retorna *this
.
O segundo operador (pós-decremento) faz uma cópia do *this
, avalia --*this
. E retorna a cópia.
move_iterator::operator-
Diminui o iterador armazenado e retorna o valor indicado.
move_iterator operator-(difference_type _Off) const;
Parâmetros
Comentários
O operador retorna move_iterator(*this) -= _Off
.
move_iterator::operator*
Desreferencia o iterador armazenado e retorna o valor. Isso se comporta como um rvalue reference
e realiza uma atribuição de movimentação. O operador transfere o elemento atual para fora do iterador de base. O elemento seguinte se torna o novo elemento atual.
reference operator*() const;
Comentários
O operador retorna (reference)*base()
.
move_iterator::operator->
Como um normal RandomIterator
operator->
, ele fornece acesso aos campos que pertencem ao elemento atual.
pointer operator->() const;
Comentários
O operador retorna &**this
.
move_iterator::pointer
O tipo pointer
é um typedef
com base no iterador aleatório RandomIterator
de move_iterator
e pode ser usado alternadamente.
typedef RandomIterator pointer;
Comentários
O tipo é um sinônimo de RandomIterator
.
move_iterator::reference
O tipo reference
é um typedef
com base no value_type&&
para move_iterator
e pode ser usado alternadamente com value_type&&
.
typedef value_type&& reference;
Comentários
O tipo é um sinônimo para value_type&&
, que é uma referência de rvalue.
move_iterator::value_type
O tipo value_type
é baseado move_iterator
typedef
na característica value_type
do iterador e pode ser usado de forma intercambiável com ela.
typedef typename iterator_traits<RandomIterator>::value_type value_type;
Comentários
O tipo é um sinônimo para a característica do iterador typename iterator_traits<RandomIterator>::value_type
.
Confira também
<iterator>
Lvalues e Rvalues
Operadores de construtores de movimento e de atribuição de movimento (C++)
Referência da biblioteca padrão C++