有人可以向我解释一下 stl 算法中的 pred 字段是如何准确使用的吗?
谢谢
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
which 是一个函数作为第三个参数传递给std::find_if
.