inline void rotate(ForwardIterator,ForwardIterator middle,ForwardIterator last);
将range内的元素旋转,将middle处的元素旋转到first处,将middle+1处的元素旋转到first+1处,对于0<=n<=last-first区间内的每一个n,将元素*(first+n)赋值给*(first+(n+(last-middle))%(last-first)),也就是
将[first,middle)与[middle,last)中的每个元素互换,可以用swap_ranges互换两个长度相同的range,用rotate换两个长度不同的相邻的range
#include <iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std; int main() { vector<int> v{1,2,3,4,5,6}; rotate(v.begin(),begin(v)+3,v.end()); for_each(v.begin(),v.end(),[](int i) { cout<<i<<" "; }); cout<<endl; rotate_copy(begin(v),begin(v)+2,end(v),ostream_iterator<int>(cout," ")); cout<<endl; return 0; }