1

我知道我可以这样做:

 vector<int> insidetest;

 if(std::all_of(insidetest.begin(),insidetest.end(),[](int i){return i>100;}))
    {
       std::cout << "All greater" << std::endl;
    }

但我想调用另一个函数(可能比> 1000更复杂)。如何在 std::all_of 中调用另一个函数,例如:

   bool fun(const vector<int> *s)
   {
   return true;
   }
4

1 回答 1

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)))
于 2013-04-22T06:03:15.963 回答