C++ 查找的工作(vector.begin()、vector.end()、A[i])==vector.end()

C++ 查找的工作(vector.begin()、vector.end()、A[i])==vector.end(),c++,vector,stl,find,C++,Vector,Stl,Find,我使用它来避免在向量中输入重复的元素。 它实际上是如何工作的。如果有人能解释,那就太棒了。将一系列迭代器作为输入,并在该范围内搜索给定值。如果找到该值,则返回该值的迭代器。如果未找到该值,则返回指定的结束迭代器。在这种情况下,由于vector.end()是指定的结束迭代器,因此如果在向量中找不到A[i]值,就会返回该迭代器 保存不能重复的值列表的一种更简单的方法是使用或代替std::vector,例如: if(find(vector.begin(),vector.end(), A[i])==ve

我使用它来避免在向量中输入重复的元素。 它实际上是如何工作的。如果有人能解释,那就太棒了。

将一系列迭代器作为输入,并在该范围内搜索给定值。如果找到该值,则返回该值的迭代器。如果未找到该值,则返回指定的结束迭代器。在这种情况下,由于
vector.end()
是指定的结束迭代器,因此如果在
向量中找不到
A[i]
值,就会返回该迭代器

保存不能重复的值列表的一种更简单的方法是使用或代替
std::vector
,例如:

if(find(vector.begin(),vector.end(), A[i])==vector.end())
{
    vector.push_back(A[i]);
}
#包括
std::集s;
...
如果(s.插入(A[i])。秒{
//插入成功,不是重复的
}
否则{
//插入失败,是重复的
}
...

理解其工作原理的关键在于理解的返回值。详细说明您理解的内容和具体不理解的内容将有助于您回答此问题。否则,我们必须猜出你不明白的地方。如果语句?平等比较<代码>查找
<代码>推回?
#include <set>

std::set<decltype(A)::value_type> s;
...
if (s.insert(A[i]).second) {
    // insert successful, was not a duplicate
}
else {
    // insert failed, was a duplicate
}
...