c++ - 在 C++ 中查找函数
问题描述
我在 Ubuntu 18.04.2 LTS 上使用 g++ 7.4.0
我想我发现了一个错误:
vector<int> a(10,1);
vector<int>::iterator it = find(a.begin()+6,a.begin()+3,8);
if(it != a.end()) cout<<"FOUND"<<endl;
结果:
FOUND
是不是应该找不到?我还发现:
it = a.begin()+3
解决方案
不,这不是错误。它完全遵循标准定义:
设E为:
—*i == value
对于find
,
...返回: E所在
i
的范围 [first
,last
)中的第一个迭代器。如果没有找到这样的迭代器,则返回。true
last
i
由于在 [ a.begin()+6
, a.begin()+3
)范围内没有迭代器为*i == 8
真,因此std::find
返回a.begin()+3
。
推荐阅读
- java - 如何在 SearchRequestBuilder 中为 elasticsearch 版本 6.6.1 设置脚本模板
- sql-server - 我的 .NET 控制台应用程序中的“创建窗口句柄时出错”
- ruby-on-rails - 在nodejs算法rsa-sha1 private_key.pem中创建签名
- android - 我可以使用带有 RadioButtons 的 Flow 助手吗?
- python-3.x - 如何在 Python 3 中模拟连接和超时错误?
- javascript - 无法使用 JavaScript fetch 向 Sonarqube api 发送授权请求
- hadoop - 失败时无限重新运行 Oozie
- vue.js - vue 属性作为没有值的道具名称
- keycloak - JBPM/Keycloak集成环境,通过Workbench请求时不给出Task List
- python - 从零开始在 python 中的 Bleu 分数