lambda表达式

含义

lambda表达式定义了一个匿名函数,并可以捕获一定范围内的变量。

语法:

[capture] (params) opt  ->  ret {body};

capture : 捕获列表。

params : 参数列表。

opt : 函数选项。

ret : 返回类型。

body : 函数体。

当函数返回值很明显时可省略 返回值定义 。 auto p =[](int i){return i;}

Capture 解释

lambda表达式可以通过捕获列表捕获一定范围内的变量。
  • [] : 不捕获任何变量
  • [&] : 捕获外部作用域中的变量,并作为引用在函数体中使用(按引用捕获)。
  • [=] : 捕获外部作用域中所有变量,并作为副本在函数体中使用。(按值捕获)
  • [=,&foo] : 按值捕获外部作用域中所有变量,并按引用捕获foo 变量。
  • [bar]:按值捕获bar 变量,不捕获其他变量
  • [this] : 捕获当前类中的this指针,让lambda表达式拥有和当前类成员函数同样的访问权限。

当修改按值捕获的外部变量时,需要显示指明lambda表达式为mutable.        


int a =0 ;
auto f1 =[=]{return a++;}              // error; 修改按值捕获的外部变量
auto f2 = [=]()mutable{return a++;}    // right



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值