up:: Cpp
source:: C++ のラムダ式 - C++ 言語の基本 - C/C++ 入門
source:: ラムダ式 - cpprefjp C++日本語リファレンス
C++11以降。
auto f = [](){
cout << "Hello, world!" << endl;
};
最初の[]
はキャプチャリスト。定義していた値を、このラムダ式を呼び出した時点で固定する。次にラムダを呼び出したとき書き換えられていても同じ値になる。
#include <iostream>
using namespace std;
int main() {
int i = 123;
auto f = [i]() {
cout << "f(): i = " << i << endl;
};
f();
i = 999;
f();
}
次の()
は引数。ラムダを通常の関数のように呼び出したとき、引数を渡せる。
#include <iostream>
using namespace std;
int main() {
int i = 0;
auto f = [i](int j) {
cout << "i = " << i << endl;
cout << "j = " << j << endl;
};
i = 1;
f(i);
}
戻り値は()
後に->
。型を書き込んで、{}
を始めればあとはその形で返せる。
式内でreturnを忘れずに。
ちなみに型書き込みが無くても推論してくれるらしい。
#include <iostream>
using namespace std;
int main() {
auto f = [](int i, int j) -> int {
return i * j;
};
cout << f(2, 3) << endl;
}