Lambda 表达式
Lambda表达式是C++中的语法糖。
形式
一般Lambda表达式形如:[capture](parameters)->return-type{body}
如果没有参数,空的()可以省略。返回值也可以省略。
举例:
std::sort(x, y, [](float a, float b){return std::abs(a) < std::abs(b);});
这是一个匿名的Lambda表达式,若想引用Lambda表达式,则形如:
auto lambda = [](int x){ return x * 2; };
Lambda捕获发方式
- []:默认不捕获任何变量
- [=]:默认以值捕获所有变量
- [&]:默认以引用捕获所有变量
- [x]:仅以值捕获x,其它变量不捕获
- [&x]:仅以引用捕获x,其它变量不捕获
- [=, &x]:默认以值捕获所有变量,但是x是例外,通过引用捕获
- [&, x]:默认以引用捕获所有变量,但是x是例外,通过值捕获
- [this]:通过引用捕获当前对象(其实是复制指针
- [*this]:通过传值方式捕获当前对