1. lambda 表达式的语法
[捕捉列表] (参数列表) mutable ->return_type {函数体}
-
(参数列表)
:与函数传参一致。不需要传递参数时,可以连同()
省略。 -
mutable
:传值捕捉时,mutable 可以取消参数的常性,使其在函数体内能被修改。不使用时,可以省略;使用该修饰符时,(参数列表)
不可省略(即使参数列表为空)。 -
->return_type
:函数体的返回值类型,通常可以省略,由编译器自行推导。
C++11 中,最简单的 lambda 表达式为
[]{}
,但它没有任何作用。
1.2 lambda 用于sort的一个场景
struct Goods { string _name;// 名称 double _price;// 价格 double _evaluations;// 评价 Goods(const string& name, double price, double evaluations) :_evaluations(evaluations) , _price(price) , _name(name) { } };
int main()
{
vector<Goods> v = {
{
"苹果", 2.1, 5 }, {
"香蕉", 3, 4 }, {
"橙子", 2.2,3 }, {
"菠萝", 1.5, 4 } };