有人可以向我解释一下 STL 算法中的 pred 字段是如何使用的吗?
谢谢
最佳答案
pred
代表 predicate,它基本上是一个可调用实体,它可以是一个函数,也可以是一个仿函数(或 lambda,它本质上是一个仿函数或函数,具体取决于它是否捕获变量)。因此一个谓词可以接受一个或多个参数,并返回一个 bool 值。
这里是 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
。
关于c++ - STL 算法中的 pred 字段是什么,我该如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12124802/