04/25/2020
C++ 匿名函数(lambda)
lambda表达式 1
匿名函数:一个未命名类的未命名的对象。
- 格式: [capture list] (parameter list) -> return type {function body}
- 捕获列表是一个lambda所在函数中定义的局部变量的列表(通常为空)
- 参数列表
- 返回类型是一个后置的
- 函数体
- 可以忽略参数列表和返回类型,但必须包含捕获列表和函数体
- 未指定返回类型,返回void
- 不能有默认参数
auto f = [](int i,int j)->int{
return i + j; };//指定lambda的返回值
f(2,3); //5
f = []{
return 3};
f(); //3
捕获列表
值捕获
void func()
{
int size = 10;//局部变量
auto f = [size]{
return size};//捕获局部变量size
size = 0; //改变size,不会影响lambda函数中的size
cout << f(); //10
}
引用捕获
void func()
{
int size = 10;
auto f = [&size]{
return size};//捕获所在函数func的局部变量size,所以函数体内可以使用size
size