有人可以向我解释stl算法中的pred字段是如何使用的?
谢谢
答案 0 :(得分:7)
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; });
注意第三个参数是一个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);
请注意,现在作为函数的is_three
作为第三个参数传递给std::find_if
。