C++ 命名要求: Predicate
来自 cppreference.cn
Predicate 要求描述了一个可调用对象,它返回一个 BooleanTestable 值。
Predicate 通常与接受输入数据(单个对象/容器)和谓词的算法一起使用,谓词随后在输入数据上调用,以决定后续的行动方案。 C++ 标准库中谓词用法的一些示例包括
- std::all_of, std::any_of, std::none_of 接受元素数组和谓词作为输入。对单个输入元素调用谓词,如果对于所有/任何/没有元素,谓词返回 true,则返回 true。
- std::find_if 接受元素序列和谓词。返回序列中第一个谓词返回值为 true 的元素。
上面给出的算法工具的描述是粗略的,旨在用简单的术语解释 Predicate。 有关详细信息,请参阅各个页面。
换句话说,如果算法接受 Predicate pred
和迭代器 first
,它应该能够使用给定的谓词通过类似 if (pred(*first)) { /*...*/ } 的构造来测试迭代器 first
指向的类型的对象。
函数对象 pred
不得通过解引用的迭代器应用任何非常量函数,并且必须接受 const
参数,无论参数是 const
还是非 const
,行为都相同。 此函数对象可以是函数指针或具有适当函数调用运算符的类型的对象。
[编辑] 要求
本节内容不完整 原因:更好地描述实际要求 |
[编辑] 缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 已发布行为 | 正确行为 |
---|---|---|---|
LWG 3031 | C++98 | 关于 const 值的要求不足 |
要求已加强 |
[编辑] 参见
(C++20) |
指定可调用类型是布尔谓词 (概念) |