c++ - 使用 find_if 查找结构内部的 int for std::list with structs

标签 c++ list stl

如果列表包含结构,我如何将 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/

相关文章:

c++ - STL 元编程 - 在编译时创建了哪些类型的模板类?

C++ 帮助在 STL 程序中排序

在列表中解压迭代器的 Pythonic 方法

java - 为什么@resource可以找到所有实现接口(interface)的类并将它们作为列表注入(inject)

python - 比较 2 个词典列表,并将一个列表中缺失(不匹配)的词典添加到另一个列表中

c++ - 在优先级队列中配对

c++ - boost::spirit::karma 语法:带有可选属性的结构的逗号分隔输出

c++ - 别名模板的包扩展

c++ - 寻求对 MSVC 9.0 的 C++ 标准合规性的引用

c++ - Std List、Vector、Map 等占用的空闲内存