「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的具體類型
|