STL算法 -------- 逆转和旋转

来源:互联网 发布:域名跳转 绕过备案 编辑:程序博客网 时间:2024/06/08 14:21

1. reverse()

2. reverse_copy()

3. rotate()

4. rotate_copy()


#include <iostream>#include <algorithm>#include <vector>#include <iterator>using namespace std;template <typename T>void Print(const T& t){for(typename T::const_iterator itr=t.begin(); itr!=t.end(); ++itr){cout<<*itr<<' ';}cout<<endl;}int main( int argc, char** argv ){vector<int> vec;for(int i=1; i<=9; ++i){vec.push_back(i);}Print(vec);reverse(vec.begin(), vec.end());Print(vec);reverse_copy(vec.begin()+1, vec.end()-1, ostream_iterator<int>(cout, " "));cout<<endl;reverse(vec.begin(), vec.end());//rotate(vec.begin(), vec.begin()+1, vec.end());//rotate(vec.begin(), vec.end-1, vec.end());rotate(vec.begin(), find(vec.begin(), vec.end(), 4), vec.end());Print(vec);return 0;}

#include <iostream>#include <algorithm>#include <vector>#include <iterator>#include <set>using namespace std;template <typename T>void Print(const T& t){for(typename T::const_iterator itr=t.begin(); itr!=t.end(); ++itr){cout<<*itr<<' ';}cout<<endl;}int main( int argc, char** argv ){set<int> nset;for(int i=1; i<=9; ++i){nset.insert(i);}Print(nset);set<int>::iterator pos = nset.begin();//pos = pos+4;//set是一种双向迭代器,不可以直接+或-advance(pos, 4);rotate_copy(nset.begin(), pos, nset.end(), ostream_iterator<int>(cout, " "));cout<<endl;pos = nset.end();advance(pos, -2);rotate_copy(nset.begin(), pos, nset.end(), ostream_iterator<int>(cout, " "));cout<<endl;rotate_copy(nset.begin(), nset.find(4), nset.end(), ostream_iterator<int>(cout, " "));cout<<endl;return 0;}


0 0
原创粉丝点击