如果列表包含结构,我如何将 find_if 与 std::list 一起使用?我的第一个伪代码尝试如下所示:
typename std::list<Event>::iterator found =
find_if(cal.begin(), cal.last(), predicate);
这里的问题是谓词在列表中不是直接可见的,而是在 event.object.return_number()
中。我应该如何引用嵌套在结构中并需要访问 get 方法的 int。
最佳答案
您可以使用仿函数类(它类似于函数,但允许您拥有状态,例如配置):
class Predicate
{
public:
Predicate(int x) : x(x) {}
bool operator() (const Cal &cal) const { return cal.getter() == x; }
private:
const int x;
};
std::find_if(cal.begin(), cal.end(), Predicate(x));
关于c++ - 使用 find_if 查找结构内部的 int for std::list with structs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3996474/