0
我无法确定我在做什么这个std::all_of
调用错了。std :: all_of不接受类成员函数作为函数与1参数
我有一个类统计:
class Statistics {
public:
bool isDataSet() const { return m_data.size() > 0; }
private:
std::vector<double> m_data;
};
统计类的每个实例对应于某个对象。
在不同文件中的另一个函数中,我想只在数据已经在全部Statistics
实例初始化时才显示统计。我想用std::all_of
功能以下列方式:
if(std::all_of(m_stats.begin(), m_stats.end(), &Statistics::isDataSet)) {
...
}
其中std::vector<Statistics*> m_stats.
,该“谓词术语不计算为服用1个参数的函数”编译器报告错误。据我所知,每个类成员都会传递这个指针作为第一个参数,所以Statistics::isDataSet()
实际上应该是一个带有1个参数的函数。但是std::all_of
看到这个错误。
我错了,我的假设Statistics::isDataSet()
应该被接受为1参数在std::all_of()
函数?
+1,后者对非绑定人群更直观,但都是可行的。 – WhozCraig
谢谢! '[](const Statistics * s){return s-> isDataSet(); }'也做了诡计!为什么不''[x](){return x-> isDtaSet();}'工作? –
@PavloDyban实际上最后一个lambda是一个_nulary__可调用对象(函数),但预期为一元谓词 – zaufi