2

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

有没有一种快速的方法可以做到这一点,或者我应该使用另一个容器?

4

1 回答 1

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);
    });
}
于 2014-03-05T19:12:41.537 回答