stl中set的运用,又学到了一个知识点
/*
* =====================================================================================
*
* Filename: hd1412.c
*
* Description: 求两个集合的并集,并顺序输出
*
* Version: 1.0
* Created: 2013年09月26日 23时37分20秒
* Revision: none
* Compiler: gcc
*
* Author: Ni WenXian (hello world~ iam coming), niwenxianq@qq.com
* Organization: AMS/ICT
*
* =====================================================================================
*/
#include <iostream>
#include <set>
using namespace std;
int main(){
int m,n,x;
set<int> s;
set<int>::iterator it;
while(cin>>m>>n){
s.clear();
while(m--){cin>>x;s.insert(x);}
while(n--){cin>>x;s.insert(x);}
for(it=s.begin();it!=s.end();it++){
if(it==s.begin()) cout<<*it;
else cout<<" "<<*it;
}
cout<<endl;
}
return 0;
}
如果不用set,自己写起来还真是麻烦. 上面方法还是借用别人的思想
看来处理这类问题,首先想到的应该是stl
方法2:
1.先把所有的数据存储到一个数组中, a[200000]
2.排序a, 不用去重,这样太麻烦,输出的时候作控制就可以了
3. 输出, 如果相同的值,就只输一个
这个还是要用到排序算法
#include <algorithm>
sort(a, a+m+n);
方法3.
直接用
set_intersection(),set_union()就行了