繁体   English   中英

find(vector.begin(),vector.end(), A[i])==vector.end() 的工作

[英]working of find(vector.begin(),vector.end(), A[i])==vector.end()

if(find(vector.begin(),vector.end(), A[i])==vector.end())
{
    vector.push_back(A[i]);
}

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

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

保存不能重复的值列表的一种更简单的方法是使用std::setstd::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
}
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM