Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

rotate

 

Cambie los elementos en dos intervalos adyacentes.


   template<class ForwardIterator>
void rotate(
   ForwardIterator _First, 
   ForwardIterator _Middle, 
   ForwardIterator _Last
);

_First

Un iterador hacia delante que dirige la posición del primer elemento del intervalo que se activará.

_Middle

Un iterador hacia delante que define el límite dentro del intervalo que dirige la posición del primer elemento de la segunda parte del intervalo cuyos elementos deben intercambiarse con los de la primera parte del intervalo.

_ Last

Un iterador hacia delante que dirige la posición una más allá del último elemento en el intervalo que se activará.

Los intervalos especificados deben ser válidos; todos los punteros deben ser dereferenceable y dentro de la secuencia la posición última es accesible de primera por el aumento.

La complejidad es lineal con como máximo (_Last – _First) intercambios.

Ejemplo

// alg_rotate.cpp
// compile with: /EHsc
#include <vector>
#include <deque>
#include <algorithm>
#include <iostream>

int main( ) {
   using namespace std;
   vector <int> v1;
   deque <int> d1;
   vector <int>::iterator v1Iter1;
   deque<int>::iterator d1Iter1;

   int i;
   for ( i = -3 ; i <= 5 ; i++ )
   {
      v1.push_back( i );
   }

   int ii;
   for ( ii =0 ; ii <= 5 ; ii++ )
   {
      d1.push_back( ii );
   }

   cout << "Vector v1 is ( " ;
   for ( v1Iter1 = v1.begin( ) ; v1Iter1 != v1.end( ) ;v1Iter1 ++ )
      cout << *v1Iter1  << " ";
   cout << ")." << endl;

   rotate ( v1.begin ( ) , v1.begin ( ) + 3 , v1.end ( ) );
   cout << "After rotating, vector v1 is ( " ;
   for ( v1Iter1 = v1.begin( ) ; v1Iter1 != v1.end( ) ;v1Iter1 ++ )
      cout << *v1Iter1  << " ";
   cout << ")." << endl;

   cout << "The original deque d1 is ( " ;
   for ( d1Iter1 = d1.begin( ) ; d1Iter1 != d1.end( ) ;d1Iter1 ++ )
      cout << *d1Iter1  << " ";
   cout << ")." << endl;

   int iii = 1;
   while ( iii <= d1.end ( ) - d1.begin ( ) ) {
      rotate ( d1.begin ( ) , d1.begin ( ) + 1 , d1.end ( ) );
      cout << "After the rotation of a single deque element to the back,\n d1 is   ( " ;
      for ( d1Iter1 = d1.begin( ) ; d1Iter1 != d1.end( ) ;d1Iter1 ++ )
         cout << *d1Iter1  << " ";
      cout << ")." << endl;
      iii++;
   }
}
          El vector v1 es (-3 -2 -1 0 1 2 3 4 5).
Después de activar, el vector v1 es (0 1 2 3 4 5 -3 -2 -1).
El deque original d1 es (0 1 2 3 4 5).
Después de que el giro de un solo elemento de deque a la reproducción,
 d1 es (1 2 3 4 5 0).
Después de que el giro de un solo elemento de deque a la reproducción,
 d1 es (2 3 4 5 0 1).
Después de que el giro de un solo elemento de deque a la reproducción,
 d1 es (3 4 5 0 1 2).
Después de que el giro de un solo elemento de deque a la reproducción,
 d1 es (4 5 0 1 2 3).
Después de que el giro de un solo elemento de deque a la reproducción,
 d1 es (5 0 1 2 3 4).
Después de que el giro de un solo elemento de deque a la reproducción,
 d1 es (0 1 2 3 4 5).

Requisitos

Encabezado: <algorithm>

Espacio de nombres: std

Mostrar: