gpt4 book ai didi

c++ - 检查 std::vector 是否有重复项

转载 作者:可可西里 更新时间:2023-11-01 18:24:58 27 4
gpt4 key购买 nike

我想检查一个整数 vector 是否有任何重复项,如果有则必须返回 true。所以我尝试做这样的事情:

vector<int> uGuess = {1,2,3,3,4,5}
vector<int> a = uGuess;
sort(a.begin(), a.end());
bool d = unique(a.begin(), a.end());

这将不起作用,因为 unqiue 不能分配为 bool 值。我应该如何着手呢?如果我要编写一个 for 循环来执行相同的操作,我应该怎么做?

最佳答案

您要查找的算法是 std::adjacent_find .

// The container must be sorted!
const std::vector<int> sortedVector = {1,2,3,3,4,5};
const bool hasDuplicates = std::adjacent_find(sortedVector.begin(), sortedVector.end()) != sortedVector.end();

std::unique 不同,std::adjacent_find 不修改容器。

作为奖励,std::adjacent_find 将迭代器返回到重复“对”中的第一个元素:

const auto duplicate = std::adjacent_find(sortedVector.begin(), sortedVector.end());

if (duplicate != sortedVector.end())
std::cout << "Duplicate element = " << *duplicate << "\n";

关于c++ - 检查 std::vector 是否有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46477764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com