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