在std :: all_of中调用一个函数

时间:2013-04-22 06:01:27

标签: c++ c++11 stl

我知道我可以这样做:

 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;
   }

1 个答案:

答案 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)))