我想知道标准库中是否有任何工具可以同时计算两个已排序范围之间的集合交集和差集。希望它的签名类似于以下形式:
经过调用
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)
中共有的元素。
cplusplus.com上set_difference
和set_intersection
的示例实现似乎可以帮助我创建一个高效的实现,只需要进行一次扫描,而不是三次。但如果它已经在标准库中了,我就不想重复造轮子了。
例如,如请求所示:
给定两个集合a={0, 1, 2, 3, 4}和b={2, 4, 5, 6},那么我想构建以下三个集合:
- only_a = {0,1,3}
- only_b = {5,6}
- common = {2,4}
[first1,last2)
? - P0Wstd::tuple<Output1, Output2, Output3>
,否则您可以只使用Output1
和Output2
的插入器迭代器。 - Jarod42