我正在尝试使用 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())
原文由 Tim 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试这个:
或者,如果您为
MyStruct
定义了适当的==
重载,则可以使用find
:当您进行某种 异构 查找时,
find_if
版本通常是最好的,例如,如果您刚刚获得int
,而不是MyStruct
的值。