
- set_intersection 交集
- set_union 并集
- set_difference 差集
注意: 容器必须是一个有序序列
//集合常用算法
//set_intersection, set_union, set_difference 交,并,差集
//注意:使用的容器必须是一个有序序列
#include
#include
class MyPrint
{
public:
void operator()(int val)
{
cout << val << " ";
}
};
void test()
{
list<int> ls1;
list<int> ls2;
for (int i = 1; i < 10; i++)
{
ls1.push_back(i);
ls2.push_back(i + 5);
}
list<int> ls3;
ls3.resize(min(ls1.size(), ls2.size()));
list<int>::iterator it = set_intersection(ls1.begin(), ls1.end(), ls2.begin(), ls2.end(), ls3.begin()); //求交集,返回值是一个迭代器
for_each(ls3.begin(), it, MyPrint());
cout << endl;
ls3.resize(ls1.size() + ls2.size());
it = set_union(ls1.begin(), ls1.end(), ls2.begin(), ls2.end(), ls3.begin()); //求并集
for_each(ls3.begin(), it, MyPrint());
cout << endl;
ls3.resize(ls1.size());
it = set_difference(ls1.begin(), ls1.end(), ls2.begin(), ls2.end(), ls3.begin()); //求ls1对ls2的差集
for_each(ls3.begin(), it, MyPrint());
cout << endl;
}
int main()
{
test();
return 0;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)