C++ 命名要求: Predicate
來自 cppreference.com
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++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 3031 | C++98 | 對 const 值的要求不足 |
要求已加強 |
[編輯] 另請參閱
(C++20) |
指定可呼叫型別是布林謂詞 (concept) |