我知道我可以这样做:
vector<int> insidetest;
if(std::all_of(insidetest.begin(),insidetest.end(),[](int i){return i>100;}))
{
std::cout << "All greater" << std::endl;
}
但我想调用另一个函数(可能比&gt; 1000更复杂)。如何在std :: all_of中调用另一个函数,例如:
bool fun(const vector<int> *s)
{
return true;
}
答案 0 :(得分:8)
如果fun
有这样的签名 - 就没有办法了。
它fun
有签名bool(int)
,然后只需写
if(std::all_of(insidetest.begin(),insidetest.end(),fun))
如果你想要其他参数 - 你可以使用std::bind
例如签名bool(int, int, int)
bool fun(int value, int min, int max)
{
return value > min && value < max;
}
if(std::all_of(insidetest.begin(),insidetest.end(),
std::bind(fun, std::placeholders::_1, 1, 5)))