2012-08-25 28 views

回答

7

pred代表谓语这基本上是一个可调用的实体,或者是一个函数或仿函数(或拉姆达,这实质上是取决于它捕获变量算符或函数( s)或不)。所以谓词可以带一个或多个参数,并返回一个布尔值。

下面是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; }); 

通知第三个参数是其被用作元谓词的λ。

在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的功能。

相关问题