我有两个 unordered_sets,需要检查第一个的所有元素是否也是第二个的元素。
有没有一种快速的方法可以做到这一点,或者我应该使用另一个容器?
我有两个 unordered_sets,需要检查第一个的所有元素是否也是第二个的元素。
有没有一种快速的方法可以做到这一点,或者我应该使用另一个容器?
只需使用循环(或相应的算法)。复杂性与要测试的范围的大小(近似)呈线性关系。
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);
});
}