有些代码跑不通,总是报错,现在修改成下面的样子了:
template<class T, class Cond>
struct counter {
Cond cond; // 添加一个变量
size_t operator()(size_t c, T t) {
return c + (cond(t) ? 1 : 0); // 使用变量进行判断
}
};
template<class Iter, class Cond>
size_t count_if(Iter begin, Iter end, Cond c) {
auto op = counter<typename Iter::value_type, Cond>{c}; // 初始化counter结构体
return reduce(begin, end, size_t(0), op);
}
展开