C++ STL(第十九篇:算法-- set相关算法)

本文介绍了C++ STL中与set相关的四个算法:set_union、set_intersection、set_difference和set_symmetric_difference,详细阐述了它们的功能、应用场景及操作性质,并强调了这些操作的稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、set 相关算法

前面提到过,有一些算法会跟数据结构绑定在一起,这里就总结一下与set相关的四种算法,分别是并集、交集、差集、对称差集。

1.1、set_union

set_union 用来构造 S1,S2的并集,此集合内含 S1 或 S2 内的每一个元素。S1、S2及其并集都以 排序区间 表示。返回值为一个迭代器,指向输出区间的尾端。

由于 S1 和 S2 内的每个元素都不需唯一,因此,如果某个值在 S1 出现 n 次,在 S2 出现m次,那么该值在输出区间中会出现 max(m,n) 次。set_union 是一种 稳定操作 ---- 输入区间内的每个元素的相对顺序都不会改变

template<class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,
						InputIterator2 first2,InputIterator2 last2,
						OutputIterator result)
{
	//当两个区间都尚未到达尾端时,执行以下操作
	while( first1 != last1 && first2 != last2)
	{
		if( *first1 < *first2)
		{
			*result = *first1;
			++first1;
		}
		else if( *first2 < *first1)
		{
			*result = *first2;
			++first2;
		}
		else
		{
			*result = *first1;
			++first1;
			++first2;
		}
		++result;
	}
	
	//只要两区之中有一区到达
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值