c++ - 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()
是指定的结束迭代器,如果A[i]
在vector
.
保留不能重复的值列表的更简单方法是使用std::set
orstd::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
}
...
推荐阅读
- swift - 使用嵌套适配器垂直滚动时出现滞后问题 | IGListKit
- python - 从其他软件的 python 模块访问库
- python - 如何在 Django/Heroku 应用程序中复制 /etc/hosts 文件中的条目?
- ssl-certificate - 带有 CA 签名证书的两种 SSL
- c# - 当“确定”按钮的“检查”功能不存在时如何获取弹出消息的 Xpath
- cypress - Cypress 崩溃并出现一些错误 INVALID ARG TYPE
- python - 如何连接两个字符字段的输入并将结果存储在 django 的另一个模型中?
- aggregate - DDD:没有持久性的聚合根
- python - 检查两个 csv 文件的两列值,如果匹配或不匹配,则拆分列并显示结果
- javascript - Chrome 扩展全局错误/异常处理程序