代码直接贴了
//reverse reverse_copy
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
int main(){
int a[]={1,2,3,4,5,6,7,8,9,10};
vector<int>v(a,a+10);
reverse(v.begin(),v.end());
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
cout<<endl;
reverse(v.begin()+1,v.end()-1);
for(vector<int>::iterator itera=v.begin();itera!=v.end();++itera){
cout<<*itera<<" ";
}
cout<<endl;
reverse_copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
cout<<endl;
system("pause");
return 0;
}
//rotate rotate_copy
#include<iostream>
#include<string>
#include<algorithm>
#include<functional>
#include<vector>
using namespace std;
int main(){
int a[]={1,2,3,4,5,6,7,8,9,10};
vector<int>v(a,a+10);
vector<int>vv(a,a+10);
rotate(v.begin(),v.begin()+3,v.end());//相当于循环移动类似于valarray的cshift(+) cshift(-);advance(+),advance(-)
for(vector<int>::iterator iter=v.begin();iter!=v.end();++iter){
cout<<*iter<<" ";
}
cout<<endl;
rotate(v.begin(),find(v.begin(),v.end(),7),v.end());
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
cout<<endl;
vector<int>::iterator pos=vv.begin();
advance(pos,1);
rotate_copy(vv.begin(),pos,vv.end(),ostream_iterator<int>(cout," "));
cout<<endl;
pos=vv.end(); //若没有这句,则会报错,从v.begin()+ 从v.end()-
advance(pos,-2);
rotate_copy(vv.begin(),pos,vv.end(),ostream_iterator<int>(cout," "));
cout<<endl;
system("pause");
return 0;
}