【发布时间】:2014-05-23 16:13:04
【问题描述】:
我有一个结构向量说“v”。我需要找到 ID 与给定 ID 匹配的“v”的某个项目。
我在另一篇文章中发现要走的路是“find_if”。所以我实现了以下内容:
std::find_if(v.begin(), v.end(), MatchesID(id))!= v.end();
注意:我已经按照帖子中的建议正确创建了 MatchesID 类。
现在,我如何访问包含我搜索的“id”的特定矢量项?
我试过了:
std::vector<int>::iterator it = std::find_if (v.begin(), v.end(), MatchesID(id));
但它给出了错误。
编辑:错误 C2440:“正在初始化”:无法从“std::_Vector_iterator<_ty>”转换为“std::_Vector_iterator<_ty>”
EDIT2:为了完整起见,我也是基于帖子:Search for a struct item in a vector by member data
【问题讨论】:
-
它给出了哪些错误?
-
你试过
std::vector<int>::const_iterator吗?此外,另一种选择是使用auto并让编译器为您找出类型。 -
请显示
MatchesID的定义 -
如果它是一个结构体向量,似乎迭代器类型应该是vector
::iterator。或者,如果您的编译器支持 C++11,您可以只写“auto it = ...” -
您应该准确指定
v的类型。为了最大限度地提高效率,您实际上应该提供一个重现问题的完整示例。