G.5.3 排序和相关操作(4)
3.合并
合并函数假设区间是经过排序的。
(1)merge( )
merge( )函数将排序后的区间[first1, last1] 中的元素与排序后的区间[first2, last2] 中的元素进行合并,并将结果放到从result开始的区间中。目标区间不能与被合并的任何一个区间重叠。在两个区间中发现了等价元素时,第一个区间中的元素将位于第二个区间中的元素前面。返回值是合并的区间的超尾迭代器。第一个版本使用<来确定顺序,第二个版本使用比较对象comp。
(2)inplace_merge( )
inplace_merge( )函数将两个连续的、排序后的区间-[first, middle] 和[middle, last] -合并为一个经过排序的序列,并将其存储在[first, last] 区间中。第一个区间中的元素将位于第二个区间中的等价元素之前。第一个版本使用<来确定顺序,而第二个版本使用比较对象comp。
4.使用集合
集合操作可用于所有排序后的序列,包括集合(set)和多集合(multiset)。对于存储一个值的多个实例的容器(如multiset)来说,定义是广义的。对于两个多集合的并集,将包含较大数目的元素实例,而交集将包含较小数目的元素实例。例如,假设多集合A包含了字符串"apple"7次,多集合B包含该字符串4次。则A和B的并集将包含7个"apple"实例,它们的交集将包含4个实例。
(1)includes( )
如果[first2, last2)区间中的每一个元素在[first1, last1)区间中都可以找到,则includes( )函数返回true,否则返回false。第一个版本使用<来确定顺序,而第二个版本使用比较对象comp。
(2)set_union( )
set_union( )函数构造一个由[first1, last1]区间和[first2, last2] 区间组合而成的集合,并将结果复制到result指定的位置。得到的区间不能与原来的任何一个区间重叠。该函数返回构造的区间的超尾迭代器。并集包含在任何一个集合(或两个集合)中出现的所有元素。第一个版本使用<来确定顺序,而第二个版本使用比较对象comp。
(3)set_intersection( )