转载请注明,来自:
#include#include #include using namespace std;vector > v;// lambda使用function封装function f1(int k){ return function ([=](int x) -> int { if(x > k) return 1; else if(x == k) return 0; else return -1; });}// 要使用lambda表达式作为参数,需用函数模版template void f2(Lambda l, int i) { cout<< l(i) < >::iterator iter = v.begin(); iter != v.end(); ++iter) { cout << (*iter)(9) << endl; cout << (*iter)(10) << endl; cout << (*iter)(11) << endl; } int k = 10; auto lambda = [=](int x) -> int { if(x > k) return 1; else if(x == k) return 0; else return -1; }; k = 6; f2(lambda, 8); return 0;}
输出结果:
-1
0 1 -1
lambda 引入符:
1. [] //不捕获任何外部变量 2. [=] //以值的形式捕获所有外部变量 3. [&] //以引用形式捕获所有外部变量 4. [x, &y] //x以传值形式捕获,y以引用形式捕获 5. [=, &z] //z以引用形式捕获,其余变量以传值形式捕获 6. [&, x] //x以值的形式捕获,其余变量以引用形式捕获例如上面的代码中,将“auto lambda = [=](int x) -> int”中的“=”改为"&",则k就是引用捕获,运行返回值则为1。