rotate

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

猜你喜欢

转载自www.cnblogs.com/tianzeng/p/10385786.html