(C++11)Lambda表达式(匿名函数)和为什么使用Lanbda表达式

Lambda表达式(匿名函数)和为什么使用Lanbda表达式

1.什么是Lambda表达式

名称Lanbda来自landba caculus(λ演算)--一种定义和应用函数的数学系统。这个系统能让您使用匿名函数--即无需给函数命名。在C++11中,对于接受函数指针或函数符的的函数,可使用匿名函数定义(lambda)作为其参数。与前述函数f3对应的lambda如下:

bool f3(int x){return x%3==0;}(计算是否被3整除)

对应lambda表达式:

[](int x){return x%3==0;}

差别有两个:使用[]替代了函数名(这就是匿名函数的由来);没有声明返回类型。返回类型相当于使用decltyp根据返回值推断得到,这里为bool.如果lambda不包含返回语句,推断出返回类型将为void.就这个示例而言,你讲以如下方式使用该lambda:

std::vector<int> numbers(1000);

count3=std::count_if(numbers.begin(),numbers.end(),[](int x ){return x% 3==0;})

(count_if()的前两个参数对应指定区间,二第三个参数影视一个返回true或false的函数对象。函数count_if()返回为true的次数)

也就是说,使用整个lambda表达式替换函数指针或函数符构造函数。

仅当lambda表达式完全由一条返回语句组成时,自动类型腿短才管用:否则,需要使用新增的返回类型后置语法:

[](double x)->double(int y=x;return x-y;)//返回类型为double

2.为什么使用Lanbda表达式


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值