“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。
|
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的具体类型 |
原文:https://www.cnblogs.com/xxp1997/p/10741074.html