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