【发布时间】:2016-12-12 23:06:34
【问题描述】:
我想在两个std::vector 中搜索一个值。如果在其中一个中找到它,我想返回它的迭代器。如果没有,我想返回一些表明它没有找到的值。
在只涉及一个std::vector 的正常情况下,我会返回std::vector::end。在这种情况下我该怎么办?
正常情况:
auto find_ten=[](const std::vector<int>& v){
return std::find(v.cbegin(),v.cend(),10);
}
我的情况:
auto find_ten=[](const std::vector<int>& v1,const std::vector<int>& v2){
auto it1=std::find(v1.cbegin(),v1.cend(),10);
if(it1==v1.cend()){
auto it2=std::find(v2.cbegin(),v2.cend(),10);
if(it2==v2.cend()){
//What should I return here??
}
return it2;
}
return it1;
}
我想返回一些我可以稍后检查的东西,以知道在其中任何一个中都找不到数字 10。
【问题讨论】:
-
迭代器从不为“null”。
-
(虽然一个单一的迭代器可以帮助你,但你可以用一个迭代器做的很少。)
-
@LightnessRacesinOrbit 已更正
-
我将返回数组中的索引,如果未找到则返回 -1。这可以通过区分
begin()和迭代器指针来完成。但也许这很蹩脚。 -
@Jean-FrançoisFabre 返回索引意味着您必须返回它属于哪个向量的线索