STL--set_difference
set_difference(),作用是求两个集合的差。即求A-B(属于A但不属于B的元素)
set_difference()算法计算两个集合[start1, end1)和[start2, end2)的差集, 并将差集存放到result.
两个集合以序列的形式给出, 且必须先按升序排好位置.
set_difference()是一个指向result序列末尾的迭代器.
#include <iostream> #include <algorithm> #include <vector> using namespace std; int a[100],b[100]; int main(){ int n,m; while(scanf("%d%d",&n,&m)) { if(n == 0 && m == 0) break; int i; for(i = 0;i < n;i++) scanf("%d",&a[i]); for(i = 0;i < m;i++) scanf("%d",&b[i]); sort(a,a + n); sort(b,b + m); vector<int> v(100); vector<int>::iterator it; it = set_difference(a,a + n,b,b + m,v.begin()); v.resize(it-v.begin()); if(v.size() == 0) cout<<"NULL"<<endl; else { for(it = v.begin(); it != v.end(); it++) cout<<*it<<" "; cout<<endl; } } return 0; }