C++ lambda函数

发布时间 2023-07-15 21:50:25作者: 屏

一、格式


大括号内是变量捕获,小括号内是参数列表。变量捕获的来源都是当前位置“能看得见”的变量。

二、 变量捕获



上图左:将它“能看得见”的变量都按引用捕获。 上图右:将它“能看得见”的变量都按值捕获。
比如某个lambda表达式在语句块内,但是它全体引用捕获的话可以捕获全局变量

上图:按值捕获N, 其余变量按引用捕获。

上图:在只有变量M,N的情况下,四个式子等价

在类中捕获当前实例的指针
在c++14和c++17中有拓展,具体不展示
所有图片来自https://www.bilibili.com/video/BV1fG41157Ew/?spm_id_from=333.337.search-card.all.click&vd_source=8e542be705d993c91535e3a91be6652f

三、注意

因为它毕竟也是一个表达式,所以
1.lambda表达式末尾必须要有分号
2.可以在语句块内定义,当然也可以在外面。全局变量之类的可以直接用在函数体里面
3.调用方法和普通函数完全一样