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;
}
//只要两区之中有一区到达