如何检查无序集重叠?

时间:2014-03-05 18:59:23

标签: c++ algorithm optimization unordered-set

我有两个unordered_sets,需要检查第一个元素的所有元素是否也是第二个元素。

有没有快速的方法可以做到这一点,还是应该使用另一个容器?<​​/ p>

1 个答案:

答案 0 :(得分:4)

只需使用循环(或相应的算法)。复杂度(大约)是待测范围大小的线性。

template <typename UnorderedSet, typename Iterator>
bool contains_all(UnorderedSet&& set, Iterator first, Iterator last)
{
    using value_type = std::iterator_traits<Iterator>>::value_type;
    return std::all_of(first, last, [&set] (const value_type& value) {
        return set.count(value);
    });
}