c++ lambda表达式
c++11引入了Lambda表达式,使得开发人员可以更方便的创建匿名函数。Lambda表达式是c++语言的一个重要特性,它可以作为函数对象使用,可以用来替代一些繁琐的函数声明和定义。
语法:
-
[capture list]是捕获列表,必填。
-
(parameter list)是参数列表,选填。
-
specifiers是限定符,选填。
-
exception是异常说明符,选填。
-
-> type是返回值类型,选填。
-
{ function body }是表达式的函数体,必填。
一个简单的例子: [](int x, int y){ return x + y; }
参数列表 没有可省略,
mutable规范 异常说明 可选 ,(有两个知识点,mutable牵扯在值捕获下,修改值)
返回类型 可选,
---------------------
这里重点说下,捕获列表,顾名思义:把父作用域的局部变量(非静态)捕获到lambda内部使用(局部静态变量可直接访问,全局变量访问权限待试),
捕获列表书写在[]中,与函数参数的传递类似,捕获方式可以是值和引用。
1.把要捕获的变量一个,一个列出来也叫显示捕获。
2.用=,&捕获,叫隐式捕获 (告诉编译器,=值捕获方式,&引用捕获方式)。
转:
https://baijiahao.baidu.com/s?id=1764204752336882618&wfr=spider&for=pc
https://blog.csdn.net/kinghzking/article/details/131132529
https://learn.microsoft.com/zh-cn/cpp/cpp/lambda-expressions-in-cpp?view=msvc-170