最小型的lambda函数
[]{ std::cout << \"Hello\" << std::endl; };
调用该函数:
[]{ std::cout << \"Hello\" << std::endl; }();
也可通过这种方式调用:
auto func = []{ std::cout << \"Hello\" << std::endl; };
func();
labmbda可以拥有参数:
auto func1 = [](const std::string& s){std::cout << s << std::endl;};
func1(\"Hello\");
注意:lambda不可以是template,始终要指明其所有类型
Lambda也可以返回某值,不需要指明返回类型,该类型可以根据返回值推导出来
[]{return 42;} 返回的是一个int类型
如果想指明返回类型,可以:
[]()->double { return 42; }
[]内可以指明一个capture用来处理外部作用域内未被传递为实参的数据
[=]:意味着外部作用域以传值的方式传递给lambda
[&]:意味着外部作用域以传引用的方式传递给lambda
可以个别指明lambda内所访问的对象是传值还是传引用:
int x = 0;
int y = 42;
auto func2 = [x, &y]{std::cout << \"x: \" << x << \"\\n\" << \"y: \" << y << std::endl;
++y};
func2();
std::cout << \"y: \" << y << std::endl;
可以声明lambda为mutable,获取修改传入的值的权限:
int id = 0;
auto func3 = [id]()mutable {std::cout << \"id: \" << id << std::endl; ++id;};
f(); //id=0
f(); //id=1
继续阅读与本文标签相同的文章
任正非亲自参与,2021数字化转型再造华为!
Steam新版游戏库本周正式推出,UI更加美观
-
将阿里云产品整合成为高校课程实训的训练营产品的实践(二)
2026-05-18栏目: 教程
-
小程序审核常见驳回类型
2026-05-18栏目: 教程
-
Python Threading 学习笔记 | 3、join功能
2026-05-18栏目: 教程
-
Python Threading 学习笔记 | 4、Queue功能
2026-05-18栏目: 教程
-
Python Threading 学习笔记 | 5、不一定有效率GIL
2026-05-18栏目: 教程
