我有两个unordered_sets,需要检查第一个元素的所有元素是否也是第二个元素。
有没有快速的方法可以做到这一点,还是应该使用另一个容器?</ p>
答案 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);
});
}