C++のlambda
1482 ワード
c++11にはlambdaが導入され、inline関数をパラメータとして定義したり、localオブジェクトとして使用したりすることができます.Lambdaの導入は,主にSTLアルゴリズムとコンテナの組み合わせとして用いられるC++標準ライブラリの使い方を変えた.
例は次のとおりです.
[capture list] (parameter list) -> return type { function body }
1.capture list: ,
[=], by value lambda。 , lambda , , 。
[&], by reference lambda。 , 。
mutable : , by reference
2.parameter list:
3.return type:
4.function body:
例は次のとおりです.
#include
#include
#include
using namespace std;
std::function returnLambda()
{
return [](int x, int y) {return x * y; };
}
int main()
{
/*auto l = [] {cout << "hello lambda" << endl; }; // lambda
l();*/
/*auto l = [](const string& s) {cout << s << endl; };
l("hello lambda");*/ // lambda
int x = 0;
int m = 1;
int y = 2;
int n = 3;
auto qqq = [x, &y, &m, n]()
{ //x++;
y--;
cout << x << y << m << n << endl;
};// lambda
qqq();
cout << "x=" << x << endl;
cout << "y=" << y << endl;
//auto lf = returnLambda();
//cout << lf(6, 7) << endl;
}