【发布时间】:2021-01-29 17:41:24
【问题描述】:
if(find(vector.begin(),vector.end(), A[i])==vector.end())
{
vector.push_back(A[i]);
}
我使用它来不在向量中输入重复元素。 它实际上是如何工作的。如果有人能解释一下,那就太好了。
【问题讨论】:
if(find(vector.begin(),vector.end(), A[i])==vector.end())
{
vector.push_back(A[i]);
}
我使用它来不在向量中输入重复元素。 它实际上是如何工作的。如果有人能解释一下,那就太好了。
【问题讨论】:
std::find() 将一系列迭代器作为输入,并在该范围内搜索给定值。如果找到该值,则返回该值的迭代器。如果未找到该值,则返回指定的结束迭代器。在这种情况下,由于vector.end() 是指定的结束迭代器,因此如果在vector 中找不到A[i] 值,则会返回该值。
保存不能重复的值列表的更简单方法是使用std::set 或std::unordered_set 而不是std::vector,例如:
#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
}
...
【讨论】: