C++11匿名関数(lambda関数、lambda式)
5484 ワード
Lambda式の定義形式は次のとおりです.
次のようになります.「外部変数アクセス方式説明子」は、{}で使用される、{}の外側に定義された変数が{}で変更を許可するか否かを表す=または&であってもよい. は、{}において、外部に定義された変数を使用しなくてもよい. パラメータがない場合、空のカッコ()は を省略できます."->戻り値タイプ"は省略できます.
具体的な意味は以下の通りです.
例:次は合法的なLambda式です.
Lambda式は実際には関数ですが、名前はありません.次のセグメントでは、Lambda式を使用します.
この区間の出力結果は:11 2 33 4
// [ ] ( ) -> { }
[capture](parameters)->return-type{body}
次のようになります.
具体的な意味は以下の通りです.
[] // . Lambda .
[x, &y] //x , y .
[&] //
[=] //
[&, x] //x .
[=, &z] //z .
例:次は合法的なLambda式です.
[=] (int x, int y) -> bool {return x%10 < y%10;}
Lambda式は実際には関数ですが、名前はありません.次のセグメントでは、Lambda式を使用します.
int a[4] = {11, 2, 33, 4};
sort(a, a+4, [=](int x, int y) -> bool { return x%10 < y%10; } );
for_each(a, a+4, [=](int x) { cout << x << " ";} );
この区間の出力結果は:11 2 33 4