c++ - STL 算法中的 pred 字段是什么,我该如何使用它?

标签 c++ algorithm stl predicate

有人可以向我解释一下 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/

相关文章:

c++ - cmake 在 Windows 上与 cpprestsdk 链接

c++ - 如何有效地收集给定数组中的重复元素?

algorithm - Redis 中的跳过列表为什么使用 p=1/4 而不是 1/e?

c++ - 包含任意类型的任意 STL 容器的函数模板

c++ - 使用 std::deque 时重定位赋值

c++ - 分配的动态内存总是被删除?

c++ - 使用 CreateFile 打开文件*

c++解密从服务器下载的文件

algorithm - 方程求解算法

c++ - 比较 vector 中的元素并返回对象的最佳方法