名稱空間
變體
操作

C++ 命名要求: Predicate

來自 cppreference.com
 
 
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) [編輯]