名前空間
変種
操作

名前付き要件: Predicate

提供: cppreference.com
< cpp‎ | named req
 
 
名前付き要件
基本
レイアウト
ライブラリ全体
コンテナ
コンテナの要素
イテレータ
ストリーム入出力
乱数
並行処理
(C++11)

(C++11)
(C++11)
その他
 

Predicate 要件は述語、すなわち bool として判定可能な値を返す callable を記述します。

Predicate は一般的には、入力データ (個々のオブジェクトやコンテナ) と述語を取るアルゴリズムで使用され、その後の行動の方向を決定するために入力データに対して呼ばれます。 C++ 標準ライブラリにおける述語の用途の例には以下のものがあります。

  • std::all_ofstd::any_ofstd::none_of —— 配列の要素と述語を入力として取ります。 個々の入力要素に対して述語を呼び、すべて、1個以上、0個の要素に対して述語が true を返した場合に true を返します。
  • std::find_if —— 要素のシーケンスと述語を取ります。 述語が true と等しい値を返したシーケンス内の最初の要素を返します。

上で述べているアルゴリズムの説明は Predicate を簡単な言葉で説明することを目的とした大雑把なものです。 詳細な情報は個々のページを参照してください。

別の言い方をすると、アルゴリズムが Predicate pred とイテレータ first を取る場合、 if(pred(*first)) {...} のような構文を用いて与えられた述語を使用してそのイテレータ first の指す型のオブジェクトを判定することができるべきです。

関数オブジェクト pred は逆参照されたイテレータを通した任意の定数でない関数を適用してはなりません。 この関数オブジェクトは関数へのポインタかもしれませんし、適切な関数呼び出し演算子を持つ型のオブジェクトかもしれません。

[編集] 要件