现在的位置: 首页 > 综合 > 正文

merge,inplace_merge

2013年08月28日 ⁄ 综合 ⁄ 共 1163字 ⁄ 字号 评论关闭

直接代码如下

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

 

抱歉!评论已关闭.