3

誰かが stl アルゴリズムの pred フィールドが正確にどのように使用されているかを説明できますか?

ありがとうございました

4

1 に答える 1

8

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

于 2012-08-25T19:06:00.103 に答える