有没有STL算法可以检测容器中是否存在重复元素(使用operator==
或给定的谓词)?
让我们来考虑这两个向量:
std::vector<int> v1{ 1, 2, 3 };
std::vector<int> v2{ 1, 2, 1 };
我会期望有这样一个函数:
我希望有一个如下所示的函数:
std::is_exclusive( v1.begin(), v1.end() ); // returning true
std::is_exclusive( v2.begin(), v2.end() ); // returning false
有这样一个简单的函数吗?我找不到任何(找到了
std::unique
,但它会修改向量...)注意:我不是在问“如何检查容器是否有重复项”,我知道如何做到这一点(基本上,我可以做
( std::set<int>( v1.begin(), v1.end() ).size() == v1.size() )
,还可能存在许多其他选项。 我想知道是否有 STL 算法函数可以更加智能地完成此操作,因为我很惊讶竟然找不到任何...
std::vector
,如何确定它是否包含所有唯一的元素,即没有重复项?例如:{1, 2, 3, 4, 5}
是唯一的,但{1, 2, 3, 2}
不是唯一的。 - Edgar Rokjān