誰かが stl アルゴリズムの pred フィールドが正確にどのように使用されているかを説明できますか?
ありがとうございました
pred
基本的に、関数またはファンクター (または変数をキャプチャするかどうかに応じて、本質的にファンクターまたは関数であるラムダ) のいずれかである呼び出し可能なエンティティである述語を表します。したがって、述語は 1 つ以上の引数を取り、ブール値を返します。
これはstd::find_ifの例で、そのオーバーロードの 1 つは単項述語を 3 番目の引数として取ります。この述語は、 1 つの引数を取り、以下を返すため、単項です。bool
std::vector<int> v{1,2,3,5,6};
auto it = std::find_if(begin(v), end(v), [](int i) { return i == 3; });
3 番目の引数は、単項述語として使用されるラムダであることに注意してください。
C++03 では、例は次のようになります。
bool is_three(int i) { return i == 3; }
std::vector<int>::iterator it = std::find_if(v.begin(), v.end(), is_three);
is_three
関数は の 3 番目の引数として渡されることに注意してくださいstd::find_if
。