Lambda

一种临时性的轻量化的匿名函数

什么是Lambda

Lambda是C++ 11 中的新标准, 用于定义并创建匿名的函数对象,以简化编程工作。

Lambda 语法

1
[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}

例如:

1
[] (int x, int y) -> int { int z = x + y; return z; }  返回类型为int
1
[] (int x, int y) { return x + y; } // 隐式返回类型

Lambda 常用场景

在算法中用于定义排序规则

1
2
3
sort(people.begin(), people.end(),
[](const vector<int>& lhs, const vector<int>& rhs)
{return lhs[0] == rhs[0] ? lhs[1] <= rhs[1] : lhs[0] > rhs[0];});

上面的lambda表达式定义了排序规则,其解释如下:

  1. 按照h递减 (lhs[0] > rhs[0])

  2. h相同时,按照k递增 (lhs[1] <= rhs[1])

参考文献

0%