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

 

posted @ 2018-03-22 17:20  CCxiao5  阅读(739)  评论(0编辑  收藏  举报