Compartilhar via


Classe reverse_iterator

A classe de modelo é um adaptador de iterador que descreve um objeto de iterador inverso que se comporta como um iterador bidirecional ou de acesso aleatório, somente em sentido inverso. Ela permite a travessia regressiva de um intervalo.

template <class RandomIterator>
class reverse_iterator

Parâmetros

  • RandomIterator
    O tipo que representa o iterador a ser adaptado para operar no sentido inverso.

Comentários

Os contêineres existentes da Biblioteca de Modelo Padrão também definem os tipos reverse_iterator e const_reverse_iterator, bem como possuem funções membro rbegin e rend que retornam iteradores inversos. Esses iteradores apresentam semântica de substituição. O adaptador reverse_iterator complementa essa funcionalidade, pois oferece semântica de inserção e também pode ser usado com fluxos.

Os reverse_iterators que exigem um iterador bidirecional não devem chamar nenhuma das funções membro operator+=, operator+, operator-=, operator- ou operator[], que podem ser usadas apenas com iteradores de acesso aleatório.

Se o intervalo de um iterador for [_First, _Last), em que o colchete à esquerda indica a inclusão em _First e o parêntese à direita indica a inclusão do elemento até _Left, o próprio _Left será excluído. Os mesmos elementos são incluídos na sequência invertida [rev – _First, rev – _Left), de modo que, se _Left for um elemento depois do fim em uma sequência, o primeiro elemento rev – _First na sequência inversa apontará para *(_Left – 1 ). A identidade que relaciona a todos os iteradores inversos a seus iteradores subjacentes é:

&*(reverse_iterator ( i ) ) == &*( i – 1 ).

Na prática, isso significa que na sequência invertida, reverse_iterator fará referência ao elemento que está uma posição depois (à direita do) do elemento ao qual o iterador se referiu na sequência original. Desse modo, se um iterador tratou o elemento 6 na sequência (2, 4, 6, 8), reverse_iterator tratará o elemento 4 na sequência inversa (8, 6, 4, 2).

Construtores

reverse_iterator

Constrói um reverse_iterator padrão ou um reverse_iterator de um iterador subjacente.

Typedefs

difference_type

Um tipo que fornece a diferença entre dois reverse_iterators que se referem a elementos no mesmo contêiner.

iterator_type

Um tipo que fornece um iterador subjacente para um reverse_iterator.

pointer

Um tipo que fornece um ponteiro para um elemento tratado por um reverse_iterator.

reference

Um tipo que fornece uma referência a um elemento tratado por um reverse_iterator.

Funções membro

base

Recupera o iterador subjacente de seu reverse_iterator.

Operadores

operator*

Retorna o elemento tratado por um reverse_iterator.

operator+

Adiciona um deslocamento a um iterador e retorna o novo reverse_iterator que trata o elemento inserido na nova posição de deslocamento.

operator++

Incrementa o reverse_iterator até o próximo elemento.

operator+=

Adiciona um deslocamento especificado de um reverse_iterator.

operator-

Subtrai um deslocamento de um reverse_iterator e retorna um reverse_iterator que trata o elemento na posição do deslocamento.

operator--

Decrementa o reverse_iterator para o elemento anterior.

operator-=

Subtrai um deslocamento especificado de um reverse_iterator.

operator->

Retorna um ponteiro para o elemento tratado pelo reverse_iterator.

operator[]

Retorna uma referência a um deslocamento do elemento tratado por um reverse_iterator por um número especificado de posições.

Requisitos

Cabeçalho: <iterator>

Namespace: std

Consulte também

Referência

<iterator>

Segurança de threads na Biblioteca Padrão C++

Biblioteca de Modelos Padrão