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