C++引入了Lambda表达式的用法,是借用其他地方,它可以简化代码,而不用在另外一个地方,定义一个函数,在在这个地方进行引用,是一个匿名函数。
用法:
返回值是一个函数指针,可以直接用auto 来代替,其基本形式为:
auto fun = capturemutble->return_type{statement;};
例如在排序函数中,可以不用定义函数,直接[](int a,int b){return a>b;};
capture 表示捕捉列表,表示可以使用父作用域的变量,例如[&a],以引用的形式将变量a穿入Lambda函数,[&]表示将父作用域的全部变量以引用的形式传进去,[=]表示以值传递的形式,将父作用域的所有指针穿入Lambda函数。[a]表示以值传递的形式传入,还可以穿入当前this指针,[this]或[&this],还可以组合使用[=,&a,&this]等。

若先定义好,然后再下面使用Lambda函数,可以直接在参数列表中穿入,也可以在后面采用类似构造函数的形式
例如:bool falg = fun(a,b)
bool flag = [](int a,int b){return a>b;}(a,b);

另外补充inline函数:
inline是一种建议,他告诉编辑器在这个地方可以直接展开函数进行使用,而不用进入系统栈去调用这个函数,当函数比较小且需要频繁调用的时候,可以提高使用效率,类里面定义的函数默认都是内联的,类作用外定义的函数,若不在定义处使用inline关键字则不会进行内联展开。
是一种以空间换时间的做法,对过大的使用会导致产生内存膨胀。