什么是stl算法中的pred字段,我该如何使用它?

时间:2012-08-25 19:00:41

标签: c++ algorithm stl predicate

有人可以向我解释stl算法中的pred字段是如何使用的?

谢谢

1 个答案:

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