Partilhar via


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 rvaluevalue_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_typedo 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_categorydo 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_typedo 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++