我有一个multiset /任何具有某些值的容器 例如{1,2,3,4,5,5}->这将返回一些值; {1,2,3,4,5}->将返回其他值;
我正在尝试找出容器中是否有重复项(以O(N)为单位) 时间复杂度。
答案 0 :(得分:0)
由于std::multiset
是有序的容器,因此任何重复项都是连续的。 std::adjacent_find
算法搜索连续的相同元素(线性复杂度)。
这是一个简单的布尔函数,用于测试重复的int
值。
#include <algorithm>
bool has_duplicates(const std::multiset<int> &mset)
{
return std::adjacent_find(mset.begin(), mset.end()) != mset.end();
}