C++Lambda表达式

前言

lambda在数学里写作-λ,俗称匿名表达式,使用它的目的是为了简化代码结构,增强可读性。
例如当重定义algorithm头文件中的sort方法的参数三时候,可以不单独使用代码段声明新方法作参数,可以进行如下操作:

sort(std::vector<int>:: begin,std::vector<int>:: end,[](int a,int b)->bool{if(a>b) return true;}())

lambda表达式结构

[capture list](parameter list)->return type{function body};

Capture list

capture list使用[]修饰,它描述除了形参之外函数体可以访问的变量范围及访问权限。
[=]表达式当前作用范围(也包括this)下变量都可以引用,传参方式为值传递;
[&]表达式当前作用范围(也包括this)下变量都可以引用,传参方式为引用;
[ ]无法使用形参之外的任何外部变量;
[name] 仅可以使用name变量的值,传参方式为值传递;
[&name] 可以使用、修改name的值,传参方式引用;
以上方法可以混合使用:
[=,&name] 略
[&,nmae] 略
[=,&namea,&nameb] 略
[&namea,nameb] 略

Parameter list&Return value&Function body

Example

sort(std::vector<int>:: begin,std::vector<int>:: end,[](int a,int b){if(a>b) return true;}());
int n1 = 1; int n2 = 1;
for (;n2<20; [&](){ int t = n2; n2 += n1; n1 = t;cout<<n2<<' '<<n1<<endl; }());
auto say=[](){cout<<"happy new year"<<endl;};
say();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值