C++ --STL之求交并差集

C++ --STL之求交并差集,第1张

集合常用算法
  • 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;
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/713420.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-24
下一篇2022-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存