Freigeben über


rotate

 

Veröffentlicht: Juli 2016

Vertauscht die Elemente in zwei aufeinander Bereiche aus.

Syntax

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

Parameter

  • _First
    Ein Vorwärtsiterator, der die Position des ersten Elements im Bereich behandelt gedreht werden.

  • _Middle
    Ein Vorwärtsiterator, die Grenze der innerhalb des Bereichs definiert, der die Position des ersten Elements im zweiten Teil des Bereichs anspricht, dessen Elemente mit denen im ersten Teil des Bereichs ausgetauscht werden sollen.

  • _ Last
    Ein Vorwärtsiterator, der die Position eine hinter dem letzten Element im Bereich behandelt gedreht werden.

Hinweise

Die Bereiche, auf die verwiesen wird, müssen gültig sein; alle Zeiger müssen dereferenzierbar befinden der Sequenz ist die letzte Position der ersten von Zunahme erreichbar.

Die Komplexität ist mit höchstens (_Last_First) Austauschen linear.

Beispiel

// 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++;
   }
}
          Vektor v1 ist (-3 -2 -1 0 1 2 3 4 5).
Nachdem Sie sich drehendes aufweist Vektor v1 (0 1 2 3 4 5 -3 -2 -1).
Die ursprüngliche Doppelschlange d1 ist (0 1 2 3 4 5).
Nachdem die Drehung eines einzelnen Doppelschlangenelements ans,
 d1 ist (1 2 3 4 5 0).
Nachdem die Drehung eines einzelnen Doppelschlangenelements ans,
 d1 ist (2 3 4 5 0 1).
Nachdem die Drehung eines einzelnen Doppelschlangenelements ans,
 d1 ist (3 4 5 0 1 2).
Nachdem die Drehung eines einzelnen Doppelschlangenelements ans,
 d1 ist (4 5 0 1 2 3).
Nachdem die Drehung eines einzelnen Doppelschlangenelements ans,
 d1 ist (5 0 1 2 3 4).
Nachdem die Drehung eines einzelnen Doppelschlangenelements ans,
 d1 ist (0 1 2 3 4 5).

Anforderungen

Header: <algorithm>

Namespace: std

Siehe auch

rotate (STL-Beispiele)
Standard Template Library