Partager via


rotate

Échanger des éléments de plusieurs plages adjacentes.

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

Paramètres

  • _First
    Un itérateur par progression adressage la position du premier élément dans la plage à faire pivoter.

  • _Middle
    Un itérateur par progression définissant la limite dans la plage qui traite de la position du premier élément dans la deuxième partie de la plage dont les éléments doivent être échangés avec celles dans la première partie de la plage.

  • _ Last
    Un itérateur par progression adressage la position une après l'élément final dans la plage à faire pivoter.

Notes

Les plages référencées doivent être valides ; tous les pointeurs doivent être deréférençables et dans la séquence la dernière position est accessible la collection contenue par l'augmentation.

La complexité un-à-un avec au plus (_Last – _First) des échanges.

Exemple

// 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++;
   }
}
  

Configuration requise

En-tête : <algorithme>

Espace de noms : std

Voir aussi

Référence

rotate (Exemples STL)

Bibliothèque STL (Standard Template Library)