“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式能够表示闭包(注意和数学传统意义上的不一样)。express
1
|
[capture list] (parameter list) ->
return
type { function body }
|
1
2
3
4
|
bool
compare(
int
& a,
int
& b)
{
return
a>b;
}
|
1
|
sort(a, a+n, compare);
|
1
|
sort(a, a+n, [](
int
a,
int
b){
return
a>b;});
//降序排序
|
1
|
auto
f=[](
int
a,
int
b){
return
a>b;};
|
1
2
3
4
|
auto
f=[x](
int
a,
int
b){
return
a>x;};
//x被捕获复制
int
x=0, y=1;
auto
g=[&](
int
x){
return
++y;};
//y被捕获引用,调用g后会修改y,须要注意y的生存期
bool
(*fp)(
int
,
int
)=[](
int
a,
int
b){
return
a>b;};
//不捕获时才可转换为函数指针
|
1
|
sort(a, a+n, [](
const
auto
& a,
const
auto
& b){
return
a>b;});
//降序排序:不依赖a和b的具体类型
|