概述
Lambda 表达式是 C++11 引入的匿名函数对象,用于创建内联的、临时的函数,常用于算法参数和回调函数。
基本语法
[capture](parameters) -> return_type {
// 函数体
}
捕获列表
-
[]:不捕获任何变量 -
[=]:以值方式捕获所有外部变量 -
[&]:以引用方式捕获所有外部变量 -
[x, &y]:混合捕获(x 值捕获,y 引用捕获)
示例代码
// 简单示例
auto add = [](int a, int b) { return a + b; };
cout << add(3, 4); // 输出: 7
// 带捕获的示例
int factor = 2;
auto multiply = [factor](int x) { return x * factor; };
// STL 算法中使用
vector<int> nums = {1, 2, 3, 4};
for_each(nums.begin(), nums.end(), [](int n) {
cout << n * 2 << " ";
});
特性说明
-
自动类型推导 :可使用
auto存储 lambda -
可变 lambda :使用
mutable关键字可修改值捕获的变量 -
尾置返回类型:可显式指定返回类型
应用场景
-
STL 算法(sort、find_if 等)
-
异步编程的回调函数
-
一次性使用的简单函数逻辑
注意事项
-
引用捕获需注意变量生命周期
-
值捕获在 lambda 创建时固定
-
C++14 起支持泛型 lambda 和初始化捕获
Lambda 提供了简洁的函数式编程支持,是现代 C++ 的重要组成部分。