【发布时间】:2017-08-13 12:31:57
【问题描述】:
我正在尝试使用 std::find_if 来查找符合某些条件的对象。考虑以下几点:
struct MyStruct
{
MyStruct(const int & id) : m_id(id) {}
int m_id;
};
...
std::vector<MyStruct> myVector; //... assume it contains things
MyStruct toFind(1);
std::vector<MyStruct>::iterator i = std::find_if(myVector.begin(), myVector.end(), ???);
我不知道在??? 中添加什么
我见过的所有示例都有一个使用硬编码值来检查 ID 的 lambda。我想要的是仅当 toFind 的 id 与向量中某个项目的 id 匹配时才返回迭代器/成功。
我看到的所有例子都没有告诉我如何传递这两个参数
编辑
附加信息 我必须将其用于两种不同的场景 一种结构有 == 运算符的结构 另一个结构没有运算符 == - 我无法创建一个,因为为这种情况寻找匹配项的标准不像用于等价运算符那样严格。
(感谢所有回复的人;我能够在一种情况下使用 find(),而在您的帮助下,我能够在另一种情况下使用 find_if())
【问题讨论】: