G.5.3 排序和相关操作(5)
set_intersection( )函数构造[first1, last1)区间和[first2, last2)区间的交集,并将结果复制到result指定的位置。得到的区间不能与原来的任何一个区间重叠。该函数返回构造的区间的超尾迭代器。交集包含两个集合中共有的元素。第一个版本使用<来确定顺序,而第二个版本使用比较对象comp。
(4)set_difference( )
set_difference( )函数构造[first1, last1)区间与[first2, last2)区间的差集,并将结果复制到result指定的位置。得到的区间不能与原来的任何一个区间重叠。该函数返回构造的区间的超尾迭代器。差集包含出现在第一个集合中,但不出现在第二个集合中的所有元素。第一个版本使用<来确定顺序,而第二个版本使用比较对象comp。
(5)set_symmetric_difference( )
set_symmetric_difference( )函数构造[first1, last1)区间和[first2, last2)区间的对称(symmetric)差集,并将结果复制到result指定的位置。得到的区间不能与原来的任何一个区间重叠。该函数返回构造的区间的超尾迭代器。对称差集包含出现在第一个集合中,但不出现在第二个集合中,或者出现在第二个集合中,但不出现在第一个集合中的所有元素。第一个版本使用<来确定顺序,第二个版本使用比较对象comp。
5.使用堆
堆(heap)是一种常用的数据形式,具有这样特征:第一个元素是最大的。每当第一个元素被删除或添加了新元素时,堆都可能需要重新排列,以确保这一特征。设计堆是为了提高这两种操作的效率。
(1)make_heap( )
make_heap( )函数将[first, last)区间构造成一个堆。第一个版本使用<来确定顺序,而第二个版本使用comp比较对象。
(2)push_heap( )
push_heap( )函数假设[first, last - 1)区间是一个有效的堆,并将last - 1位置(即被假设为有效堆的区间后面的一个位置)上的值添加到堆中,使[first, last)区间成为一个有效堆。第一个版本使用<来确定顺序,而第二个版本使用comp比较对象。
(3)pop_heap( )
pop_heap( )函数假设[first, last)区间是一个有效堆,并将位置last - 1处的值与first处的值进行交换,使[first, last - 1]区间成为一个有效堆。第一个版本使用<来确定顺序,而第二个版本使用comp比较对象。
(4)sort_heap( )