我想知道标准库中是否有任何工具可以同时计算两个排序范围之间的集合交集和集合差。带有以下签名的东西:
template <class Input1, class Input2,
class Output1, class Output2, class Output3>
Output3 decompose_sets (Input1 first1, Input1 last1,
Input2 first2, Input2 last2,
Output1 result1, Output2 result2,
Output3 result3 );
这样在调用之后decompose sets
,result1
包含所有[first1,last1)
不在其中的元素[first2,last2)
,包含所有不在其中result2
的元素,并包含所有在和中共有的元素。[first2,last2)
[first1,last1)
result3
[first1,last1)
[first2,last2)
set_difference
和的示例实现set_intersection
来自 cplusplus.com 的示例实现似乎可以帮助我创建一个只执行一次扫描而不是三个扫描的高效实现。但是,如果它在标准库中,我不想重新发明轮子。
示例,应要求:
给定两个集合 a={0, 1, 2, 3, 4} 和 b={2, 4, 5, 6} 那么我想构建以下三个集合:
- only_a = {0,1,3}
- only_b = {5,6}
- 常见 = {2,4}