直接代码如下
//merge
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> using namespace std; bool fanxu(int a,int b){ return a>b; } int main(){ int a[]={1,5,3,9,7}; int b[]={4,2,6,10,8}; vector<int>v(a,a+5); vector<int>vv(b,b+5); sort(v.begin(),v.end()); sort(vv.begin(),vv.end()); merge(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," ")); cout<<endl; for(vector<int>::iterator itera=v.begin();itera!=v.end();++itera){//还有元素,说明跟list的成员函数不一样list的merge是会破坏源区间的 cout<<*itera<<" "; } cout<<endl; sort(v.begin(),v.end(),fanxu);//按照从大到小排序 sort(vv.begin(),vv.end(),fanxu); merge(v.begin(),v.end(),vv.begin(),vv.end(),ostream_iterator<int>(cout," "),fanxu);//按照从大到小排序 cout<<endl; system("pause"); return 0; }
//inplace_merge #include<iostream> #include<string> #include<vector> #include<algorithm> #include<functional> using namespace std; int main(){ int a[]={1,2,3,4,5,6,7,1,2,3,4,5,6,7,8,9,10}; vector<int>v(a,a+17); vector<int>::iterator itera=find(v.begin(),v.end(),7); ++itera;//是7的下一个 inplace_merge(v.begin(),itera,v.end());//这里可以用partial_sort和merge来实现 for(vector<int>::iterator iter=v.begin();iter!=v.end();++iter){ cout<<*iter<<" "; } cout<<endl; system("pause"); return 0; }