STL_算法(25)_逆转和旋转 revers() 、reverse_copy()、rotate()、rotate_copy()、

来源:互联网 发布:淘宝详情页下载 编辑:程序博客网 时间:2024/06/03 08:02

STL_算法(25)_逆转和旋转

 revers() 、

reverse_copy()、

rotate()、

rotate_copy()、


STL变序性算法

revers() 、

reverse_copy()、

rotate()、

rotate_copy()、

next_permutation()

prev_permutation()

random_shuffle()

partition()

stable_partition()


#include<iostream>#include<algorithm>#include<vector>#include<iterator>using namespace std;int main(){vector<int> ivec;for(int i = 1; i <= 9; i++)ivec.push_back(i);for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;reverse(ivec.begin(), ivec.end());for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;reverse_copy(ivec.begin(), ivec.end(), ostream_iterator<int>(cout, " "));//system("pause");return 0;}

#include<iostream>#include<algorithm>#include<vector>#include<iterator>using namespace std;int main(){vector<int> ivec;for(int i = 1; i <= 9; i++)ivec.push_back(i);for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;reverse(ivec.begin(), ivec.end());for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;reverse_copy(ivec.begin() + 1, ivec.end() - 1, ostream_iterator<int>(cout, " "));cout<<endl;reverse(ivec.begin(), ivec.end());for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;//旋转rotate(ivec.begin(), ivec.begin() + 1, ivec.end());for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;rotate(ivec.begin(), ivec.end() - 2, ivec.end());for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;//system("pause");return 0;}





#include<iostream>#include<algorithm>#include<vector>#include<iterator>using namespace std;int main(){vector<int> ivec;for(int i = 1; i <= 9; i++)ivec.push_back(i);for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;reverse(ivec.begin(), ivec.end());for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;reverse_copy(ivec.begin() + 1, ivec.end() - 1, ostream_iterator<int>(cout, " "));cout<<endl;reverse(ivec.begin(), ivec.end());for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;//旋转//rotate(ivec.begin(), ivec.begin() + 1, ivec.end());//rotate(ivec.begin(), ivec.end() - 2, ivec.end());rotate(ivec.begin(), find(ivec.begin(), ivec.end(), 4), ivec.end());for(vector<int>::iterator iter  = ivec.begin(); iter != ivec.end(); iter++)cout<<*iter<<' ';cout<<endl;//system("pause");return 0;}


#include<iostream>#include<algorithm>#include<set>#include<iterator>using namespace std;int main(){set<int> iset;for(int i = 1; i <= 9; i++)iset.insert(i);for(set<int>::iterator iter = iset.begin(); iter != iset.end(); iter ++)cout<<*iter<<' ';cout<<endl;set<int>::iterator pos = iset.begin();//pos = pos + 4;// set几何不能用此操作,只能用advance 因为set是一个双向的迭代器advance(pos, 1);//双向迭代器用此操作rotate_copy(iset.begin(), pos, iset.end(), ostream_iterator<int>(cout, " "));cout<<endl;pos = iset.end();advance(pos, -2);//双向迭代器用此操作rotate_copy(iset.begin(), pos, iset.end(), ostream_iterator<int>(cout, " "));cout<<endl;rotate_copy(iset.begin(), iset.find(4), iset.end(), ostream_iterator<int>(cout, " "));cout<<endl;//system("pause");return 0;}




















0 0
原创粉丝点击