Compartilhar 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 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

move_iterator

O construtor para objetos do tipo move_iterator.

Typedefs

move_iterator::iterator_type

Um sinônimo para o parâmetro de modelo RandomIterator.

move_iterator::iterator_category

Um sinônimo para a expressão typename mais longa do mesmo nome, iterator_category identifica as habilidades gerais do iterador.

move_iterator::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.

move_iterator::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.

move_iterator::pointer

Um sinônimo para o parâmetro de modelo RandomIterator.

move_iterator::reference

Um sinônimo para a referência rvalue value_type&&.

Funções membro

move_iterator::base

A função membro retorna o iterador armazenado encapsulado por esse move_iterator.

Operadores

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

Consulte também

Tarefas

Como escrever um construtor move

Referência

<iterator>

Lvalues e Rvalues

Biblioteca de Modelos Padrão