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 um movimento. Para obter mais informações sobre rvalues, consulte Declarador de referência Rvalue: &&.
template<class Iterator>
class move_iterator {
public:
typedef Iterator iterator_type;
typedef typename
iterator_traits<Iterator>::iterator_category
iterator_category;
typedef typename iterator_traits<Iterator>::value_type
value_type;
typedef typename iterator_traits<Iterator>::difference_type
difference_type;
typedef Iterator
pointer;
typedef value_type&&
reference;
move_iterator();
explicit move_iterator (Iterator right);
template<class Type>
move_iterator (const move_iterator<Type>& right);
template <class Type>
move_iterator& operator=(const move_iterator<Type>& right);
iterator_type base () const;
reference operator* () const;
pointer operator-> () const;
move_iterator& operator++ ();
move_iterator operator++ (int);
move_iterator& operator-- ();
move_iterator operator-- (int);
move_iterator& operator+= (difference_type off);
move_iterator operator+ (difference_type off) const;
move_iterator& operator-= (difference_type off);
move_iterator operator- (difference_type off) const;
reference operator[] (difference_type off) const;
};
Comentários
A classe de modelo 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
O construtor para objetos do tipo move_iterator. |
Typedefs
Um sinônimo para o parâmetro de modelo RandomIterator. |
|
Um sinônimo para a expressão typename mais longa do mesmo nome, iterator_category identifica as habilidades gerais do iterador. |
|
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. |
|
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. |
|
Um sinônimo para o parâmetro de modelo RandomIterator. |
|
Um sinônimo para a referência rvalue value_type&&. |
Funções membro
A função membro retorna o iterador armazenado encapsulado por esse move_iterator. |
Operadores
Retorna (reference)*base(). |
|
Incrementa o iterador armazenado. O comportamento exato depende do tipo de operação: pré-incremento ou pós-incremento. |
|
Decrementa o iterador armazenado. O comportamento exato depende do tipo de operação: pré-decremento ou pós-decremento. |
|
Retorna &**this. |
|
Retorna move_iterator(*this) -= subtraindo primeiro o valor do lado direito da posição atual. |
|
Retorna (reference)*(*this + off). Permite especificar um deslocamento da base atual para obter o valor nessa posição. |
|
Retorna move_iterator(*this) += do valor. Permite adicionar um deslocamento à base para obter o valor nessa posição. |
|
Adiciona o valor do lado direito ao iterador armazenado e retorna *this. |
|
Subtrai o valor do lado direito do iterador armazenado e retorna *this. |
Requisitos
Cabeçalho: <iterator>
Namespace: std
Consulte também
Tarefas
Como escrever um construtor move