lambda表达式 C++
时间: 2023-09-04 16:14:36 浏览: 40
lambda表达式是C++11引入的一种函数对象(函数对象是可以像函数一样被调用的对象),它可以在需要函数对象的地方使用,以提供一种更加简洁和灵活的方式定义匿名函数。
Lambda表达式的语法形式如下:
```cpp
[capture](parameters) -> return_type { body }
```
其中:
- capture:捕捉列表,用于捕获外部变量。可以是空,表示不捕获任何外部变量;也可以是`[&]`表示以引用方式捕获所有外部变量;或者是`[=]`表示以值方式捕获所有外部变量。还可以指定具体的变量进行捕获,例如`[x, &y]`表示以值方式捕获变量x,以引用方式捕获变量y。
- parameters:参数列表,表示lambda函数的参数。与普通函数的参数列表一样,可以有参数类型和名称。
- return_type:返回类型,表示lambda函数的返回类型。可以省略,编译器会自动推导。
- body:函数体,表示lambda函数的具体实现。
下面是一个使用lambda表达式的示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums = {1, 5, 2, 4, 3};
// 使用lambda表达式作为排序的比较函数
std::sort(nums.begin(), nums.end(), [](int a, int b) {
return a < b;
});
// 输出排序结果
for (int num : nums) {
std::cout << num << " ";
}
return 0;
}
```
这段代码使用lambda表达式作为`std::sort`函数的比较函数,实现了对向量中元素的升序排序。输出结果为`1 2 3 4 5`。