-
Lambda表达式就是用于创建匿名函数的,是c++11新增特性。在标准c++库中有一个常用算法的库,其中提供了许多算法函数,比如sort()和find()。这些函数通常需要提供一个“谓词函数”,所谓谓词函数,就是进行一个操作用的临时函数。比如find()需要一个谓词,用于查找元素满足的条件,能够满足函数的元素才会被查找出来。这样的谓词函数,使用临时的匿名函数,既可以减少函数数量,又会让代码变得清晰易读。
-
Lambda表达式使用一对[]方括号作为开始的标识,然后()小括号内接受参数,最后{}大括号内写一个return语句
[](int a,int b){ return a>b }
-
当lambda表达式语句很简单,能自动推断返回值类型;但如果想显式指定返回值类型,可以这样:
[](int a, int b) -> int (return a>b)
-
当我们想引用一个lambda表达式时,可以使用auto关键字
auto lambda=[](int a, int b) -> int (return a>b)
-
[]称为lambda引入符,还有其它许多引入符如下:
引入符 | 作用 |
---|---|
[] | 不捕获任何外部变量 |
[=] | 以值的形式捕获所有外部变量 |
[&] | 以引用形式捕获所有外部变量 |
[=,&y] | y以引用形式捕获,其余变量以传值形式捕获 |
[x,&y] | x以传值形式捕获,y以引用形式 捕获 |