C++开发基础——lambda表达式与std::bind闭包

一,lambda表达式

1.基本概念

lambda表达式是从C++11开始引入的,主要用来定义匿名函数和闭包。lambda表达式可以被当作一个值赋给另一个变量,也可以作为实参传递给其他函数,或者作为其他函数的返回结果,用法类似于前面提到的函数对象和函数指针。如果只是把单个函数拿来传参,lambda表达式的使用方式比函数指针和函数对象更简洁。

lambda表达式可以不指定函数的返回类型,编译器将自动推导该类型。

lambda表达式的完整公式:

[capture_list](parameter_list) mutable -> return_type{ process code };

具体含义:

[]: lambda表达式的引出符,编译器根据该符号判断接下来的代码是否为lambda匿名函数。

parameter_list: 参数列表,与普通函数的参数列表一致。如果不需要传递参数,则可以省略该部分以及小括号()。

mutable: 使用了mutable修饰符的lambda表达式,不可以省略参数列表。

return_type: 函数返回值类型。该部分可以连同"->"一起省略。

process code: 函数体,它除了可以使用参数之外,还可以使用捕获到的变量。

lambda表达式样例:

[](int x, int y){return x<y;}        //[]用来标记lambda表达式的开始
[](int x=0, int y=0){return x<y;}    //传默认实参x=0,C++14标准开始支持
[]{return true;}                     //没有参数时,可以省略圆括号()
[](int x, int y)->bool{return x<y;}  //显式指定返回值类型,让代码更清晰

注意,lambda表达式中的"[ ]"不一定是空的,里面可以包含捕获子句,捕获子句用来捕获上下文中的变量来提供给lambda表达式使用。

C++代码样例: 

Demo1:

#include<iostream>
using namespace std;
i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员与背包客_CoderZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值