c++ - 我的谓词函数有什么问题?

标签 c++ c++11 functional-programming

我正在尝试通过 std::list 使用“remove_if”方法。我想删除“特殊”元素。这里有一些代码:

Class A {
public: 
void foo(size_t id) {
tasks.remove_if(&A::IsEqual(id)); //Here I have an error
}

private:
std::list<Task> tasks;
struct IsEqual {
    IsEqual(const Task& value) : _value(value) {}
    bool operator() (const size_t id) {
        return (_value._id == id);
    }
    Task _value;
    };
};

谁能解释一下错误在哪里?

最佳答案

您的 operator() 应该采用 Task 参数,因为这是 tasks 中元素的类型。

另一种写法:

tasks.remove_if([id](const Task& t) { return t._id == id });

关于c++ - 我的谓词函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917739/

相关文章:

functional-programming - 如何用函数式语言实现哈希表?

c++ - 实现开关类型特征(使用 std::conditional_t 链调用)

c# - 如何确定我的安装程序是否在 Windows 10 教育版上运行?

c++ - 根据构造函数参数特殊实现类方法

c++ - 如何制作包含数组的 vector ?

c++ - 覆盖代理类 c++ 的 std::swap

具有两个运算符的 C++11 歧义错误(一个左值第二个右值)

function - 我用 Set.Fold F# 做错了什么

c++ - WebViewProcessControl 初始化崩溃

r - R与Perl的map和grep等价的是什么?