命名空间
变体
操作

C++ 命名要求: Predicate

来自 cppreference.cn
 
 
C++ 命名要求
基本
类型属性
全库范围
Predicate(谓词)




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
(C++20)
随机数
并发
(C++11)
Ranges
多维视图
其他

 

Predicate 要求描述了一个可调用对象,它返回一个 BooleanTestable 值。

Predicate 通常与算法一起使用,这些算法接受输入数据(单个对象/容器)和一个谓词,然后将谓词应用于输入数据以决定进一步的操作。C++ 标准库中谓词用法的一些示例如下:

  • std::all_ofstd::any_ofstd::none_of 接受一个元素数组和一个谓词作为输入。对单个输入元素调用谓词,如果所有/任何/无元素谓词返回 true,则返回 true。
  • std::find_if 接受元素序列和一个谓词。返回序列中第一个谓词返回等于 true 的值的元素。

上面给出的算法设施描述是粗略的,旨在用简单的术语解释 Predicate。有关详细信息,请参阅各个页面。

换句话说,如果一个算法接受一个 Predicate pred 和一个迭代器 first,它应该能够使用给定的谓词通过像 if (pred(*first)) { /*...*/ } 这样的构造来测试迭代器 first 所指向的类型对象。

函数对象 pred 不得通过解引用迭代器应用任何非常量函数,并且必须接受一个 const 参数,无论参数是 const 还是非 const,其行为都相同。此函数对象可以是函数指针或具有适当函数调用运算符的类型对象。

[编辑] 要求

[编辑] 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 3031 C++98 const 值的要求不足 要求已加强

[编辑] 另请参阅

(C++20)
指定可调用类型是布尔谓词
(concept) [编辑]