lambda¶
lambda由4部分组成,如下:
- []
捕获列表
- ()
参数列表
- ->
返回值类型
- {}
函数体
示例代码
int x=0,y=0;
auto f = [x,&y](const std::string&str)->int{...};
1 语法形式¶
[capture list] (parameter list) -> return type
{
function body;
};
2 捕获列表[ ]¶
- 作用:引入外部变量供lambda函数中使用
[=]
: by value 只读数据,不能修改[&]
: by reference 可以修改数据[x,&y]
指定 lambda 函数内能使用的变量 x by value,y by reference[=,&y]
指定 y by reference 传进来,其它以 by value 传进来
注:[&y,=] ->不能这样
3 参数列表( )¶
- 有参时,如
[ ](char c){...};
- 无参情况可以不写,也可以写
()
,如[ ](){...};
或[ ]{...};
4 返回类型->¶
- 有返回值时,如
[ ]()->int{...};
- 无返回值时 ,可不写,如
[ ](){...};
或[ ]()->void{...};
5 示例¶
#include <iostream>
#include <string>
int main()
{
int x = 1;
int y = 1;
auto f = [x,&y](const std::string&str)->int{
std::cout << "执行lambda" << std::endl;
std::cout << str << std::endl;
// x++; //by value不可修改
y++; //by reference 可修改
return 1;
};
std::cout << "还未调用lambda" << std::endl << std::endl;
std::cout << f("你好")<<std::endl;
std::cin.get();
}