pred代表谓词,它基本上是一个可调用的实体,它可以是函数,也可以是函数(或lambda,它本质上是一个函子或函数,取决于它是否捕获变量).因此谓词可以采用一个或多个参数,并返回一个布尔值.
以下是std :: find_if的示例,其中一个重载将一元谓词作为第三个参数.这个谓词是一元的,因为它需要一个参数并返回bool:
std::vector<int> v{1,2,3,5,6};
auto it = std::find_if(begin(v), end(v), [](int i) { return i == 3; });
Run Code Online (Sandbox Code Playgroud)
请注意,第三个参数是lambda,它用作一元谓词.
在C++ 03中,示例可以是:
bool is_three(int i) { return i == 3; }
std::vector<int>::iterator it = std::find_if(v.begin(), v.end(), is_three);
Run Code Online (Sandbox Code Playgroud)
请注意,现在is_three哪个函数作为第三个参数传递给std::find_if.