c++ - 使用 find_if() 函数

标签 c++ vector std

我有一个结构 vector 说“v”。我需要找到 ID 与给定 ID 匹配的“v”的某个项目。

我在另一篇文章中发现要走的路是“find_if”。所以我实现了以下内容:

std::find_if(v.begin(), v.end(), MatchesID(id))!= v.end();

注意:我已经按照帖子中的建议正确创建了 MatchesID 类。

现在,我如何访问包含我搜索的“id”的特定 vector 项?

我试过:

std::vector<int>::iterator it = std::find_if (v.begin(), v.end(), MatchesID(id));

但它给出了错误。

编辑:错误 C2440:“初始化”:无法从“std::_Vector_iterator<_Ty,_Alloc>”转换为“std::_Vector_iterator<_Ty,_Alloc>”

EDIT2:为了完整起见,我还基于帖子:Search for a struct item in a vector by member data

最佳答案

你说你的 vector 有struct说类型 mystruct (即,您有一个 std::vector<mystruct> )。然而,您正在分配一个迭代器 std::vector<mystruct>::iteratorstd::find_if将返回类型为 std::vector<int>::iterator 的迭代器.解决方案:

std::vector<mystruct>::iterator it = std::find_if (v.begin(), v.end(), MatchesID(id));

auto it = std::find_if (v.begin(), v.end(), MatchesID(id));

关于c++ - 使用 find_if() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823861/

相关文章:

java - 比较和删除 vector 中的相似字符串

c++ - 为什么我需要显式分离短期变量?

c++ - 构造函数 : difference between defaulting and delegating a parameter

c++ - 如何在运行 C++ 应用程序的 GUI 时设置断点购买 GDB

c++ - 如何在 C++ 中初始化多个局部变量

c++ - 如何在Ubuntu中使用C++从/dev/xxx路径获取设备的USB VID、PID和序列号

c++ - 使用 std::chrono::steady_clock 对线程/异步中的代码进行基准测试

C++ 如何防止无效输入?

vector - 压缩相同类型的向量会导致 map 闭包中的不同类型

c++ - 在 C++ 中存储类对象