int a = 1;
char c = 'a';
auto abc = [a,c](int x,int y)
{
cout<<a<<" "<<c<<endl;
return x<y;
};
[]用于将外部变量出入到表达式内部
()使用表达式的时候传递的参数
{} 表达式的代码区
= 在这里代表使用外部的所有变量,但是不能修改变量的值
这个错误发生是因为你在一个非mutable
的Lambda表达式中尝试修改了一个以值捕获(by-value capture)的变量。在C++中,如果Lambda表达式被标记为非mutable
,那么它内部的所有以值捕获的外部变量都将被视为常量,这意味着你不能在Lambda表达式内部修改这些变量的值。
使用引用捕获
& 在这里代表引用外部的所有变量
j实现了在lamda表达式内部修改外部变量的值