从vs2010开始C++已经开始支持lambda表达式:
eg:
vector<int> v;
for( int i = 0; i < 10; ++i)
{
v.push_back(i);
}
foreach(v.begin(), v.end(); [](int n){cout<<n<<endl;}
1、[]是lambda的前导符,它通知编译器其后引导的是一个lambda表达式。lambda表达式的工作就是定义匿名函数类并构造其对象,而后调用其括号算符重载函数;
2、[&] 和 [=]分别表示引用所有可以引用的变量和使用所有可以使用的值;
3、当lambda想返回值的时候需要使用 return-type的形式, auto fun = [&](int n)->{return n;};
eg:
int n = 0;
auto fun = [=]()multable{ n= 1; };
fun(); // 调用执行后 n == 0
multable 类似于函数的参数传值,此关键字主要用于标识lambda表达式采用的是至传递的方式,在表达式语句块内对变量进行修改不会影响语句块外部的变量值;
转载于:https://blog.51cto.com/shunge/693712