C++11 Lambda表达式

// capture_list:捕获外部变量列表
// params_list:形参列表
// mutable:是否可以修改捕获的变量
// exception:异常设定
// return_type:返回类型
// function_body:函数体
[capture_list] (params_list) mutable exception-> return_type {
    function_body;
}
//声明了const类型的表达式,不能修改捕获列表中的值
[capture_list] (params_list)-> return_type {
    function_body;
}
//省略了返回值类型,但编译器可以根据以下规则推断出Lambda表达式的返回类型:
//(1)如果存在return语句,则返回类型由return语句的返回值类型确定;(2)如果没有return语句,则返回值为void类型
[capture_list] (params_list) {
    function_body;
}
//省略了参数列表,类似于普通函数的无参函数
[capture_list] {
    function_body;
}

//以下两种方式是值传递
int a = 123;
//值捕获
auto f = [a]{cout << a << endl;}
//函数体后面的()传入参数
auto f = [](int a){cout << a << endl;}(123);
//引用捕获
auto f = [&a]{cout << a << endl;};
//隐式捕获
auto f = [=] {cout << a << endl;};
//隐式引用捕获
auto f = [&] {cout << a << endl;};
//修改捕获变量
auto f = [a]()mutable {cout << ++a; };
//Lambda表达式的参数:1.参数列表中不能有默认参数 2.不支持可变参数 3.所有参数必须有参数名

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值