C++11新特性之匿名函数lambda

匿名函数lambda

本文主要介绍匿名函数lambda的基本语法和使用

基本语法

在这里插入图片描述
在这里插入图片描述
一般情况下编译器可以推断出函数返回值,所以也可以不指定返回值
在这里插入图片描述

捕获列表

值捕获

被捕获的变量在lambda表达式创建时拷贝在这里插入图片描述注意:c、d无法修改

引用捕获

在这里插入图片描述

隐式捕获

隐式值捕获
在这里插入图片描述
隐式引用捕获
在这里插入图片描述

空捕获列表

在这里插入图片描述

表达式捕获(C++14)

上面的捕获都是已经在外层作用域声明的变量,这些捕获方式捕获的均为左值,而不能捕获右值
C++14后支持捕获右值,允许捕获的成员用任意表达式初始化,被声明的捕获变量类型会根据表达式进行判断,判断方式与auto本质上相同
在这里插入图片描述

泛型lambda(C++14)

C++14后lambda函数形参可以用auto关键字泛型
在这里插入图片描述

可变lambda

采用值捕获的方式,lambda不能修改其值,如果想要修改,使用mutable修饰
采用引用捕获的方式,lambda可以直接修改其值
在这里插入图片描述

混合使用隐式捕获和显式捕获

要求捕获列表中第一个元素必须是隐式捕获(&或=)
混合捕获时,若隐式捕获采用引用捕获&,则显示捕获的变量必须采用值捕获的方式
混合捕获时,若隐式捕获采用值捕获=,则显示捕获的变量必须采用引用捕获的方式,即变量名前加&
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值