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