C++11lambda表达式


一、lambda表达式格式

lambda表达式书写格式:[capture-list] (parameters) mutable -> return-type {statement}

依次分别是:捕捉列表、参数列表、(mutable将捕捉的变量改变,使用mutable时,参数列表不可省略)、返回值类型、函数体

除捕捉列表和函数体外,都可以省略。

int main()
{	
	//实现一个两个数相加的lambda表达式
	auto Add = [](int a,int b)->int{return a + b;};
	
	return 0;
}

二、捕捉列表

  • 语法上捕捉列表可由多个捕捉项组成,并以逗号分割。比如:[=,&a,&b]:以引用传递的方式捕捉变量a和b,值传递方式捕捉其他所有变量 [&,a,this]:值传递方式捕捉变量a和this,引用方式捕捉其他变量
  • 捕捉列表不允许变量重复传递,否则就会导致编译错误。 比如:[=, a]:=已经以值传递方式捕捉了所有变量,捕捉a重复
  • 在块作用域以外的lambda函数捕捉列表必须为空。
  • 在块作用域中的lambda函数仅能捕捉父作用域中局部变量,捕捉任何非此作用域或者非局部变量(比如全局变量)都会导致编译报错。
  • lambda表达式之间不能相互赋值,即使看起来类型相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值