C++ 具名要求:谓词 (Predicate)

来自cppreference.com
< cpp‎ | named req
 
 
C++ 具名要求
基础
类型属性
库所属
容器
容器元素
(C++11)

迭代器
流 I/O
格式化
(C++20)
随机数
(C++11)    
并发
(C++11)
(C++11)
范围
其他
(C++11)


 

谓词 (Predicate) 要求描述了返回可作为 bool 测试的值的可调用 (Callable) 体。

谓词 (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 函数。此函数对象可以是函数指针,或者拥有适合的函数调用运算符的类型的对象。

要求