C++ set_intersection问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 09:21:05
我知道set可以用set_intersection(a.begin(),a.end(),b.begin(),b.end(),insert_iterator<set<int> >(c,c.begin()));求交集,我想问如果交集为空时会返回什么?空集还是错误?另外空集的.begin()和.end()是相等还是差一?
//我的代码如下,为什么输出是1?
#include<iostream>
#include<string>
#include <vector>
#include <set>
#include<algorithm>
using namespace std;

int main(int argc,char *argv[])
{

set<int> a,b,c;
a.clear();
b.clear();
c.clear();
a.insert(1);
b.insert(2);
set<int>::iterator it=c.begin();
set_difference(a.begin(),a.end(),b.begin (),b.end (),inserter(c,it));

for(it=c.begin();it!=c.end();it++)
cout<<(*it)<<endl;
return 0;
}

1.返回空集
2.空集的.begin()和.end()是相等的
3.你的set_difference(a.begin(),a.end(),b.begin (),b.end (),inserter(c,it));的意思是比较a和b中不同的元素 将a中与b中不同的元素放到c中
a中是1,b中是2,不同,所以将a放入c 输出c 是1