C ++ unordered_sets有内置的布尔运算吗? (相交,联合,差异)

时间:2015-11-03 23:23:40

标签: c++ c++11 boost unordered-set

我已经搜索了所有内容,但我无法找到内置方法在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}.

这是我期望经常使用的东西,我很难相信它不是内置于某个地方(或者至少在增强中)。

0 个答案:

没有答案