C++泛型算法
定制操作
lambda表达式
概述
-
特点
-
lamdba表达式是一种可调用对象,类似函数和函数指针
-
一个lambda表达式表示一个可调用的代码单元
-
lambda表达式定义在函数内部
-
-
格式
[capture list](parameter list)-> return type{function body}capture list:表示lambda表达式所在函数中定义的要在lambda中使用的局部变量的列表parameter list:表示参数列表return type:表示返回类型function body:表示函数体
-
说明
-
参数列表和返回类型可以没有,但是捕获列表和函数体必须有,即使为空。省略参数列表表示无参数,省略返回类型则会自动进行推断
1
auto f = []{return 42};
-
lambda的调用方式和普通函数相同
1
cout << f() << endl;
-
lambda的捕获
-
值捕获
-
引用捕获
1
auto f = [&v]{return v1;};
此时
v即为引用捕获。- 引用捕获的变量在lambda中同其他类型的引用行为类似
- 引用捕获的变量在使用时必须保证所引用的对象是存在的
-
隐式捕获