返回
作用:倒置或调换区间元素的位置
声明:
#include <algorithm> template <class biDirectionalItr> void reverse(biDirectionalItr first, biDirectionalItr last); template <class biDirectionalItr, class outputItr> outputItr reverse_copy(biDirectionalItr first, biDirectionalItr last,outputItr destFirst); template <class forwardItr> void rotate(forwardItr first, forwardItr newFirst, forwardItr last); template <class forwardItr, class outputItr> outputItr rotate_copy(forwardItr first, forwardItr middle, forwardItr middle,last,outputItr destFirst);
#include <iostream> #include <list> #include <string> #include <numeric> #include <iterator> #include <vector> #include <functional> #include <algorithm> using namespace std; int main() { int temp[10] = {1,3,5,7,9,0,2,4,6,8}; list<int> intList(temp,temp+10); list<int> resultList; list<int>::iterator listItr; ostream_iterator<int> screen(cout," "); cout << "intList" << endl; copy(intList.begin(),intList.end(),screen); cout << endl; // 倒置 reverse(intList.begin(),intList.end()); cout << "intList" << endl; copy(intList.begin(),intList.end(),screen); cout << endl; // reverse_copy reverse_copy(intList.begin(),intList.end(),back_inserter(resultList)); cout << "resultList:" << endl; copy(resultList.begin(),resultList.end(),screen); cout << endl; listItr = intList.begin(); listItr++; listItr++; cout << "intList before ratete" << endl; copy(intList.begin(),intList.end(),screen); cout << endl; // rotate rotate(intList.begin(),listItr,intList.end()); cout << "intList after ratete" << endl; copy(intList.begin(),intList.end(),screen); cout << endl; resultList.clear(); // rotate_copy rotate_copy(intList.begin(),listItr,intList.end(),back_inserter(resultList)); cout << "intList after ratete_copy" << endl; copy(intList.begin(),intList.end(),screen); cout << endl; cout << "resultList:" << endl; copy(resultList.begin(),resultList.end(),screen); cout << endl; resultList.clear(); // 牛逼闪闪的用法 rotate_copy(intList.begin(),find(intList.begin(),intList.end(),6),intList.end(),back_inserter(resultList)); cout << "resultList:" << endl; copy(resultList.begin(),resultList.end(),screen); cout << endl; return 0; }
运行结果:
intList
1 3 5 7 9 0 2 4 6 8
intList
8 6 4 2 0 9 7 5 3 1
resultList:
1 3 5 7 9 0 2 4 6 8
intList before ratete
8 6 4 2 0 9 7 5 3 1
intList after ratete
4 2 0 9 7 5 3 1 8 6