reverse_iterator (Clase)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

La clase de plantilla es un adaptador de iterador que describe un objeto iterador inverso que se comporta como un iterador de acceso aleatorio o bidireccional, pero en orden inverso. Habilita el recorrido hacia atrás de un intervalo.

template <class RandomIterator>  
class reverse_iterator  

Parámetros

RandomIterator
El tipo que representa el iterador que se adaptará para trabajar en orden inverso.

Los contenedores existentes en la Biblioteca de plantillas estándar también definen los tipos reverse_iterator y const_reverse_iterator y tienen funciones miembro rbegin y rend que devuelven iteradores inversos. Estos iteradores tienen semántica de sobrescritura. El adaptador reverse_iterator complementa esta funcionalidad porque proporciona semántica de inserción y también se puede utilizar con flujos.

Los reverse_iterators que requiere un iterador bidireccional no deben llamar a ninguna de las funciones miembro operator+=, operator+, operator-=, operator- u operator[], que solo se pueden utilizar con iteradores de acceso aleatorio.

Si el intervalo de iterador es [ first, última), donde el corchete de la izquierda indica la inclusión en _ primer y el paréntesis derecho indica la inclusión de elementos hasta _ izquierda excluyendo _ izquierda propio. Se incluyen los mismos elementos en la secuencia inversa [ rev â €" first, rev â €" _ izquierda) para que si _ izquierda es el elemento uno pasado-al final de una secuencia, a continuación, el primer elemento rev â €" _ primer en los puntos de secuencia inversa para *(_ izquierda â €" 1). La identidad que relaciona todos los iteradores inversos con sus iteradores subyacentes es:

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

En la práctica esto significa que, en la secuencia inversa, reverse_iterator hará referencia al elemento situado una posición más allá (a la derecha) del elemento al que el iterador se había referido en la secuencia original. Así pues, si un iterador señaló el elemento 6 en la secuencia (2, 4, 6, 8), entonces reverse_iterator señalará el elemento 4 en la secuencia inversa (8, 6, 4, 2).

Constructores

reverse_iteratorConstruye un reverse_iterator predeterminado o un reverse_iterator a partir de un iterador subyacente.

Definiciones de tipo

difference_typeTipo que proporciona la diferencia entre dos reverse_iterator que hacen referencia a elementos del mismo contenedor.
iterator_typeTipo que proporciona el iterador subyacente para reverse_iterator.
punteroTipo que proporciona un puntero a un elemento direccionado por reverse_iterator.
referenciaTipo que proporciona una referencia a un elemento direccionado por reverse_iterator.

Funciones miembro

baseRecupera el iterador subyacente de su reverse_iterator.

Operadores

operator_starDevuelve el elemento que direcciona un reverse_iterator.
operator +Agrega un desplazamiento a un iterador y devuelve el nuevo reverse_iterator que direcciona el elemento insertado en la nueva posición de desplazamiento.
operator ++Incrementa el reverse_iterator al elemento siguiente.
+= (operador)Agrega un desplazamiento especificado desde un reverse_iterator.
operator-Resta un desplazamiento a reverse_iterator y devuelve un reverse_iterator que señala el elemento en la posición desplazada.
operador--Disminuye el reverse_iterator al elemento anterior.
operador =Resta un desplazamiento especificado a un reverse_iterator.
operador->Devuelve un puntero al elemento direccionado por reverse_iterator.
[operator]](#reverse_iterator__operator_at)Devuelve una referencia a un desplazamiento de elemento con respecto al elemento direccionado por reverse_iterator un número especificado de posiciones.

Encabezado:<>>

Espacio de nombres: std

Recupera el iterador subyacente de su reverse_iterator.

 
RandomIterator base() const;

Valor devuelto

El iterador subyacente el reverse_iterator.

Comentarios

La identidad que relaciona todos los iteradores inversos con sus iteradores subyacentes es:

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

En la práctica, esto significa que en la secuencia inversa el reverse_iterator hará referencia a la posición de un elemento más allá (a la derecha de) el elemento al que el iterador se había referido en la secuencia original. Así pues, si un iterador señaló el elemento 6 en la secuencia (2, 4, 6, 8), entonces reverse_iterator señalará el elemento 4 en la secuencia inversa (8, 6, 4, 2).

Ejemplo

// reverse_iterator_base.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <algorithm>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for ( i = 1 ; i < 6 ; ++i )    
   {  
      vec.push_back ( 2 * i );  
   }  
  
   vector <int>::iterator vIter;  
   cout << "The vector vec is: ( ";  
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++ )  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::reverse_iterator rvIter;  
   cout << "The vector vec reversed is: ( ";  
   for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)  
      cout << *rvIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::iterator pos, bpos;  
   pos = find ( vec.begin ( ), vec.end ( ), 6 );  
   cout << "The iterator pos points to: " << *pos << "." << endl;  
  
   typedef reverse_iterator<vector<int>::iterator>::iterator_type it_vec_int_type;  
  
   reverse_iterator<it_vec_int_type> rpos ( pos );  
   cout << "The reverse_iterator rpos points to: " << *rpos   
        << "." << endl;  
  
   bpos = rpos.base ( );  
   cout << "The iterator underlying rpos is bpos & it points to: "   
        << *bpos << "." << endl;  
}  

Tipo que proporciona la diferencia entre dos reverse_iterator que hacen referencia a elementos del mismo contenedor.

 
typedef typename iterator_traits<RandomIterator>::difference_type  
    difference_type; 

Comentarios

El reverse_iterator tipo de diferencia es el mismo que el tipo de diferencia del iterador.

El tipo es un sinónimo de iterador rasgo typename iterator_traits < RandomIterator> :: puntero.

Ejemplo

Consulte [] reverse_iterator:: operator para obtener un ejemplo de cómo declarar y utilizar difference_type.

Tipo que proporciona el iterador subyacente para reverse_iterator.

typedef RandomIterator iterator_type;  

Comentarios

El tipo es un sinónimo del parámetro de plantilla Iterator.

Ejemplo

Consulte reverse_iterator:: base para obtener un ejemplo de cómo declarar y utilizar iterator_type.

Devuelve el elemento que dirige un iterador reverse_iterator.

 
reference operator*() const;

Valor devuelto

El valor de los elementos abordando reverse_iterator.

Comentarios

El operador devuelve *( actual â €"1).

Ejemplo

// reverse_iterator_op_ref.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <algorithm>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for (i = 1 ; i < 6 ; ++i )    
   {  
      vec.push_back ( 2 * i );  
   }  
  
   vector <int>::iterator vIter;  
   cout << "The vector vec is: ( ";  
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++ )  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::reverse_iterator rvIter;  
   cout << "The vector vec reversed is: ( ";  
   for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)  
      cout << *rvIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::iterator pos, bpos;  
   pos = find ( vec.begin ( ), vec.end ( ), 6 );  
  
   // Declare a difference type for a parameter  
   // declare a reference return type  
   reverse_iterator<vector<int>::iterator>::reference refpos = *pos;  
   cout << "The iterator pos points to: " << refpos << "." << endl;  
}  

Agrega un desplazamiento a un iterador y devuelve el nuevo reverse_iterator que direcciona el elemento insertado en la nueva posición de desplazamiento.

reverse_iterator<RandomIterator> operator+(difference_type _Off) const;

Parámetros

_Off
Desplazamiento que se agregarán al iterador inverso.

Valor devuelto

Un reverse_iterator direcciona el elemento de desplazamiento.

Comentarios

Sólo se puede utilizar esta función miembro si la reverse_iterator cumpla los requisitos de un iterador de acceso aleatorio.

Ejemplo

// reverse_iterator_op_add.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for (i = 1 ; i < 6 ; ++i )    
   {  
      vec.push_back ( 2 * i );  
   }  
  
   vector <int>::iterator vIter;  
   cout << "The vector vec is: ( ";  
   for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::reverse_iterator rvIter;  
   cout << "The vector vec reversed is: ( ";  
   for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)  
      cout << *rvIter << " ";  
   cout << ")." << endl;  
  
   // Initializing reverse_iterators to the first element  
   vector <int>::reverse_iterator rVPOS1 = vec.rbegin ( );  
  
   cout << "The iterator rVPOS1 initially points to the first "  
        << "element\n in the reversed sequence: "  
        << *rVPOS1 << "." << endl;  
  
   vector <int>::reverse_iterator rVPOS2 =rVPOS1 + 2; // offset added  
   cout << "After the +2 offset, the iterator rVPOS2 points\n"  
        << " to the 3rd element in the reversed sequence: "  
        << *rVPOS2 << "." << endl;  
}  

The vector vec is: ( 2 4 6 8 10 ).  
The vector vec reversed is: ( 10 8 6 4 2 ).  
The iterator rVPOS1 initially points to the first element  
 in the reversed sequence: 10.  
After the +2 offset, the iterator rVPOS2 points  
 to the 3rd element in the reversed sequence: 6.  

Incrementa el iterador reverse_iterator al elemento anterior.

reverse_iterator<RandomIterator>& operator++();

reverse_iterator<RandomIterator> operator++(int);

Valor devuelto

El primer operador devuelve el preincremented reverse_iterator y el segundo, el operador de incremento, devuelve una copia de la incrementado reverse_iterator.

Comentarios

Sólo se puede utilizar esta función miembro si la reverse_iterator cumpla los requisitos de un iterador bidireccional.

Ejemplo

// reverse_iterator_op_incr.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for ( i = 1 ; i < 6 ; ++i )    
   {  
      vec.push_back ( 2 * i - 1 );  
   }  
  
   vector <int>::iterator vIter;  
   cout << "The vector vec is: ( ";  
   for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::reverse_iterator rvIter;  
   cout << "The vector vec reversed is: ( ";  
   for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)  
      cout << *rvIter << " ";  
   cout << ")." << endl;  
  
   // Initializing reverse_iterators to the last element  
   vector <int>::reverse_iterator rVPOS1 = vec.rbegin( );  
  
   cout << "The iterator rVPOS1 initially points to the first "  
        << "element\n in the reversed sequence: "  
        << *rVPOS1 << "." << endl;  
  
   rVPOS1++;  // postincrement, preincrement: ++rVPSO1  
  
   cout << "After incrementing, the iterator rVPOS1 points\n"  
        << " to the second element in the reversed sequence: "  
        << *rVPOS1 << "." << endl;  
}  

The vector vec is: ( 1 3 5 7 9 ).  
The vector vec reversed is: ( 9 7 5 3 1 ).  
The iterator rVPOS1 initially points to the first element  
 in the reversed sequence: 9.  
After incrementing, the iterator rVPOS1 points  
 to the second element in the reversed sequence: 7.  

Agrega un desplazamiento especificado de un iterador reverse_iterator.

reverse_iterator<RandomIterator>& operator+=(difference_type _Off);

Parámetros

_Off
Desplazamiento que se incrementa el iterador.

Valor devuelto

Una referencia al elemento direccionado por el reverse_iterator.

Ejemplo

// reverse_iterator_op_addoff.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for (i = 1 ; i < 6 ; ++i )   
   {  
      vec.push_back ( 2 * i );  
   }  
  
   vector <int>::iterator vIter;  
  
   cout << "The vector vec is: ( ";  
   for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::reverse_iterator rvIter;  
   cout << "The vector vec reversed is: ( ";  
   for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)  
      cout << *rvIter << " ";  
   cout << ")." << endl;  
  
   // Initializing reverse_iterators to the last element  
   vector <int>::reverse_iterator rVPOS1 = vec.rbegin ( );  
  
   cout << "The iterator rVPOS1 initially points to the first "  
        << "element\n in the reversed sequence: "  
        << *rVPOS1 << "." << endl;  
  
   rVPOS1+=2;   // addition of an offset  
   cout << "After the +2 offset, the iterator rVPOS1 now points\n"  
        << " to the third element in the reversed sequence: "  
        << *rVPOS1 << "." << endl;  
}  

The vector vec is: ( 2 4 6 8 10 ).  
The vector vec reversed is: ( 10 8 6 4 2 ).  
The iterator rVPOS1 initially points to the first element  
 in the reversed sequence: 10.  
After the +2 offset, the iterator rVPOS1 now points  
 to the third element in the reversed sequence: 6.  

Resta un desplazamiento a reverse_iterator y devuelve un reverse_iterator que señala el elemento en la posición desplazada.

reverse_iterator<RandomIterator> operator-(difference_type _Off) const;

Parámetros

_Off
El desplazamiento se restará reverse_iterator.

Valor devuelto

Un reverse_iterator direcciona el elemento de desplazamiento.

Comentarios

Sólo se puede utilizar esta función miembro si la reverse_iterator cumpla los requisitos de un iterador de acceso aleatorio.

Ejemplo

// reverse_iterator_op_sub.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for ( i = 1 ; i < 6 ; ++i )  
   {  
      vec.push_back ( 3 * i );  
   }  
  
   vector <int>::iterator vIter;  
  
   cout << "The vector vec is: ( ";  
   for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::reverse_iterator rvIter;  
   cout << "The vector vec reversed is: ( ";  
   for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)  
      cout << *rvIter << " ";  
   cout << ")." << endl;  
  
   // Initializing reverse_iterators to the first element  
   vector <int>::reverse_iterator rVPOS1 = vec.rend ( ) - 1;  
  
   cout << "The iterator rVPOS1 initially points to the last "  
        << "element\n in the reversed sequence: "  
        << *rVPOS1 << "." << endl;  
  
   vector <int>::reverse_iterator rVPOS2 =rVPOS1 - 2; // offset subtracted  
   cout << "After the -2 offset, the iterator rVPOS2 points\n"  
        << " to the 2nd element from the last in the reversed sequence: "  
        << *rVPOS2 << "." << endl;  
}  

The vector vec is: ( 3 6 9 12 15 ).  
The vector vec reversed is: ( 15 12 9 6 3 ).  
The iterator rVPOS1 initially points to the last element  
 in the reversed sequence: 3.  
After the -2 offset, the iterator rVPOS2 points  
 to the 2nd element from the last in the reversed sequence: 9.  

Disminuye el iterador reverse_iterator al elemento anterior.

reverse_iterator<RandomIterator>& operator--();

reverse_iterator<RandomIterator> operator--(int);

Valor devuelto

El primer operador devuelve el predecremented reverse_iterator y el segundo, el operador de decremento de postfijo, devuelve una copia de la disminuye reverse_iterator.

Comentarios

Sólo se puede utilizar esta función miembro si la reverse_iterator cumpla los requisitos de un iterador bidireccional.

Ejemplo

// reverse_iterator_op_decr.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for (i = 1 ; i < 6 ; ++i )    
   {  
      vec.push_back ( 2 * i - 1 );  
   }  
  
   vector <int>::iterator vIter;  
  
   cout << "The vector vec is: ( ";  
   for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::reverse_iterator rvIter;  
   cout << "The vector vec reversed is: ( ";  
   for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)  
      cout << *rvIter << " ";  
   cout << ")." << endl;  
  
   // Initializing reverse_iterators to the first element  
   vector <int>::reverse_iterator rVPOS1 = vec.rend ( ) - 1;  
  
   cout << "The iterator rVPOS1 initially points to the last "  
        << "element\n in the reversed sequence: "  
        << *rVPOS1 << "." << endl;  
   rVPOS1--;  // postdecrement, predecrement: --rVPSO1  
  
   cout << "After the decrement, the iterator rVPOS1 points\n"  
        << " to the next-to-last element in the reversed sequence: "  
        << *rVPOS1 << "." << endl;  
}  

The vector vec is: ( 1 3 5 7 9 ).  
The vector vec reversed is: ( 9 7 5 3 1 ).  
The iterator rVPOS1 initially points to the last element  
 in the reversed sequence: 1.  
After the decrement, the iterator rVPOS1 points  
 to the next-to-last element in the reversed sequence: 3.  

Resta un desplazamiento especificado a un reverse_iterator.

reverse_iterator<RandomIterator>& operator-=(difference_type _Off);

Parámetros

_Off
El desplazamiento se restará el reverse_iterator.

Comentarios

Sólo se puede utilizar esta función miembro si la reverse_iterator cumpla los requisitos de un iterador de acceso aleatorio.

El operador evalúa actual + _ desactivar. a continuación, devuelve ** *esto**.

Ejemplo

// reverse_iterator_op_suboff.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for (i = 1 ; i < 6 ; ++i )  
   {  
      vec.push_back ( 3 * i );  
   }  
  
   vector <int>::iterator vIter;  
  
   cout << "The vector vec is: ( ";  
   for ( vIter = vec.begin( ) ; vIter != vec.end( ); vIter++)  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::reverse_iterator rvIter;  
   cout << "The vector vec reversed is: ( ";  
   for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)  
      cout << *rvIter << " ";  
   cout << ")." << endl;  
  
   // Initializing reverse_iterators to the first element  
   vector <int>::reverse_iterator rVPOS1 = vec.rend ( ) - 1;  
  
   cout << "The iterator rVPOS1 initially points to the last "  
        << "element\n in the reversed sequence: "  
        << *rVPOS1 << "." << endl;  
  
   rVPOS1-=2;      // Subtraction of an offset  
   cout << "After the -2 offset, the iterator rVPOS1 now points\n"  
        << " to the 2nd element from the last in the reversed sequence: "  
        << *rVPOS1 << "." << endl;  
}  

The vector vec is: ( 3 6 9 12 15 ).  
The vector vec reversed is: ( 15 12 9 6 3 ).  
The iterator rVPOS1 initially points to the last element  
 in the reversed sequence: 3.  
After the -2 offset, the iterator rVPOS1 now points  
 to the 2nd element from the last in the reversed sequence: 9.  

Devuelve un puntero al elemento direccionado por reverse_iterator.

 
pointer operator->() const;

Valor devuelto

Un puntero al elemento direccionado por el reverse_iterator.

Comentarios

El operador devuelve ** & * *esto**.

Ejemplo

// reverse_iterator_ptrto.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <algorithm>  
#include <vector>  
#include <utility>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
  
   typedef vector<pair<int,int> > pVector;  
   pVector vec;  
   vec.push_back(pVector::value_type(1,2));  
   vec.push_back(pVector::value_type(3,4));  
   vec.push_back(pVector::value_type(5,6));  
  
   pVector::iterator pvIter;  
   cout << "The vector vec of integer pairs is:\n( ";  
   for ( pvIter = vec.begin ( ) ; pvIter != vec.end ( ); pvIter++)  
      cout << "( " << pvIter -> first << ", " << pvIter -> second << ") ";  
   cout << ")" << endl << endl;  
  
   pVector::reverse_iterator rpvIter;  
   cout << "The vector vec reversed is:\n( ";  
   for ( rpvIter = vec.rbegin( ) ; rpvIter != vec.rend( ); rpvIter++ )  
      cout << "( " << rpvIter -> first << ", " << rpvIter -> second << ") ";  
   cout << ")" << endl << endl;  
  
   pVector::iterator pos = vec.begin ( );  
   pos++;  
   cout << "The iterator pos points to:\n( " << pos -> first << ", "   
   << pos -> second << " )" << endl << endl;  
  
   pVector::reverse_iterator rpos (pos);   
  
   // Use operator -> with return type: why type int and not int*  
   int fint = rpos -> first;  
   int sint = rpos -> second;  
  
   cout << "The reverse_iterator rpos points to:\n( " << fint << ", "   
   << sint << " )" << endl;  
}  

The vector vec of integer pairs is:  
( ( 1, 2) ( 3, 4) ( 5, 6) )  
  
The vector vec reversed is:  
( ( 5, 6) ( 3, 4) ( 1, 2) )  
  
The iterator pos points to:  
( 3, 4 )  
  
The reverse_iterator rpos points to:  
( 1, 2 )  

Devuelve una referencia a un desplazamiento de elemento con respecto al elemento direccionado por reverse_iterator un número especificado de posiciones.

 
reference operator[](difference_type _Off) const;

Parámetros

_Off
El desplazamiento desde el reverse_iterator dirección.

Valor devuelto

La referencia al desplazamiento del elemento.

Comentarios

The operator returns *( *this + _Off).

Ejemplo

// reverse_iterator_ret_ref.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <algorithm>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for (i = 1 ; i < 6 ; ++i )  
   {  
      vec.push_back ( 2 * i );  
   }  
  
   vector <int>::iterator vIter;  
   cout << "The vector vec is: ( ";  
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++ )  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::reverse_iterator rvIter;  
   cout << "The vector vec reversed is: ( ";  
   for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)  
      cout << *rvIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::iterator pos;  
   pos = find ( vec.begin ( ), vec.end ( ), 8 );  
   reverse_iterator<vector<int>::iterator> rpos ( pos );  
  
   // Declare a difference type for a parameter  
   reverse_iterator<vector<int>::iterator>::difference_type diff = 2;  
  
   cout << "The iterator pos points to: " << *pos << "." << endl;  
   cout << "The iterator rpos points to: " << *rpos << "." << endl;  
  
   // Declare a reference return type & use operator[]  
   reverse_iterator<vector<int>::iterator>::reference refrpos = rpos [diff];  
   cout << "The iterator rpos now points to: " << refrpos << "." << endl;     
}  

The vector vec is: ( 2 4 6 8 10 ).  
The vector vec reversed is: ( 10 8 6 4 2 ).  
The iterator pos points to: 8.  
The iterator rpos points to: 6.  
The iterator rpos now points to: 2.  

Tipo que proporciona un puntero a un elemento direccionado por reverse_iterator.

typedef typename iterator_traits<RandomIterator>::pointer pointer;  

Comentarios

El tipo es un sinónimo de iterador rasgo typename iterator_traits < RandomIterator> :: puntero.

Ejemplo

// reverse_iterator_pointer.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <algorithm>  
#include <vector>  
#include <utility>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
  
   typedef vector<pair<int,int> > pVector;  
   pVector vec;  
   vec.push_back( pVector::value_type( 1,2 ) );  
   vec.push_back( pVector::value_type( 3,4 ) );  
   vec.push_back( pVector::value_type( 5,6 ) );  
  
   pVector::iterator pvIter;  
   cout << "The vector vec of integer pairs is:\n" << "( ";  
   for ( pvIter = vec.begin ( ) ; pvIter != vec.end ( ); pvIter++)  
      cout << "( " << pvIter -> first << ", " << pvIter -> second << ") ";  
   cout << ")" << endl;  
  
   pVector::reverse_iterator rpvIter;  
   cout << "\nThe vector vec reversed is:\n" << "( ";  
   for ( rpvIter = vec.rbegin( ) ; rpvIter != vec.rend( ); rpvIter++)  
      cout << "( " << rpvIter -> first << ", " << rpvIter -> second << ") ";  
   cout << ")" << endl;  
  
   pVector::iterator pos = vec.begin ( );  
   pos++;  
   cout << "\nThe iterator pos points to:\n"  
        << "( " << pos -> first << ", "  
        << pos -> second << " )" << endl;  
  
   pVector::reverse_iterator rpos (pos);  
   cout << "\nThe iterator rpos points to:\n"  
        << "( " << rpos -> first << ", "  
        << rpos -> second << " )" << endl;  
}  

The vector vec of integer pairs is:  
( ( 1, 2) ( 3, 4) ( 5, 6) )  
  
The vector vec reversed is:  
( ( 5, 6) ( 3, 4) ( 1, 2) )  
  
The iterator pos points to:  
( 3, 4 )  
  
The iterator rpos points to:  
( 1, 2 )  

Un tipo que proporciona una referencia a un elemento direccionado por un iterador reverse_iterator.

typedef typename iterator_traits<RandomIterator>::reference reference;  

Comentarios

El tipo es un sinónimo de iterador rasgo typename iterator_traits < RandomIterator> :: referencia.

Ejemplo

Consulte [] reverse_iterator:: operator o reverse_iterator:: operator * para obtener ejemplos de cómo declarar y usar referencia.

Construye un reverse_iterator predeterminado o un reverse_iterator a partir de un iterador subyacente.

 
reverse_iterator();Â  
explicit reverse_iterator(RandomIterator 
    right);

template <class Type>  
reverse_iterator(const reverse_iterator<Type>& 
    right);

Parámetros

right
El iterador que se puede adaptar a un reverse_iterator.

Valor devuelto

Valor predeterminado reverse_iterator o un reverse_iterator adaptar un iterador subyacente.

Comentarios

La identidad que relaciona todos los iteradores inversos con sus iteradores subyacentes es:

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

En la práctica esto significa que, en la secuencia inversa, reverse_iterator hará referencia al elemento situado una posición más allá (a la derecha) del elemento al que el iterador se había referido en la secuencia original. Así pues, si un iterador señaló el elemento 6 en la secuencia (2, 4, 6, 8), entonces reverse_iterator señalará el elemento 4 en la secuencia inversa (8, 6, 4, 2).

Ejemplo

// reverse_iterator_reverse_iterator.cpp  
// compile with: /EHsc  
#include <iterator>  
#include <algorithm>  
#include <vector>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   int i;  
  
   vector<int> vec;  
   for ( i = 1 ; i < 6 ; ++i )  
   {  
      vec.push_back ( i );  
   }  
  
   vector <int>::iterator vIter;  
   cout << "The vector vec is: ( ";  
   for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++)  
      cout << *vIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::reverse_iterator rvIter;  
   cout << "The vector vec reversed is: ( ";  
   for ( rvIter = vec.rbegin( ) ; rvIter != vec.rend( ); rvIter++)  
      cout << *rvIter << " ";  
   cout << ")." << endl;  
  
   vector <int>::iterator pos;  
   pos = find ( vec.begin ( ), vec.end ( ), 4 );  
   cout << "The iterator pos = " << *pos << "." << endl;  
  
   vector <int>::reverse_iterator rpos ( pos );  
   cout << "The reverse_iterator rpos = " << *rpos   
        << "." << endl;  
}  

<>>
Seguridad para subprocesos en la biblioteca estándar de C++
Biblioteca de plantillas estándar

Mostrar: