“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