我已经搜索了所有内容,但我无法找到内置方法在c ++中的unordered_sets之间执行布尔操作。我读过有关set_intersection的内容,但这只适用于有序集。
这在像Python这样非常容易:
a = set([1, 2, 3, 4])
b = set([2, 4])
>>> a.difference(b)
set([1, 3])
>>> a.intersection(b)
set([2, 4])
>>> a.union(b)
set([1, 2, 3, 4])
我很难相信在C ++ 11和boost之间,如果不编写自己的函数,就没有干净的方法。
我错过了什么吗?是否存在原因这样的事情已经不存在了吗?
编辑:我已经阅读了this post,但它只描述了编写自己的交叉/差异/联合函数的方法。我正在寻找内置于stl或boost中的东西。编辑:用这种方式描述可能更容易......
std::unordered_set<int> whole({1, 2, 3, 4});
std::unordered_set<int> even({2, 4});
// Why doesn't something like the following exist?
std::unordered_set<int> odd = whole.difference(even);
// Result would contain {1, 3}.
这是我期望经常使用的东西,我很难相信它不是内置于某个地方(或者至少在增强中)。