C++ Lambda 表达式完全指南
Lambda 表达式是 C++11 引入的重要特性,它可以让我们在函数内部定义匿名函数,提高代码的灵活性和可读性。本文带你从基础到高级用法逐步解析 Lambda。
一、基础语法
cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
std::for_each(v.begin(), v.end(), [](int x){
std::cout << x << " ";
});
std::cout << "\n";
}
二、捕获外部变量
Lambda 可以通过值捕获 [=] 或引用捕获 [&] 外部变量。
cpp
int main() {
int a = 10;
int b = 20;
auto lambda1 = [=]() { std::cout << "a + b = " << a + b << "\n"; };
lambda1();
auto lambda2 = [&]() { a += 5; b += 5; };
lambda2();
std::cout << "a = " << a << ", b = " << b << "\n";
}
三、带参数和返回值
cpp
auto add = [](int x, int y) -> int { return x + y; };
std::cout << "5 + 3 = " << add(5, 3) << "\n";
四、可变 Lambda
通过 mutable 可以修改值捕获的变量:
cpp
int n = 10;
auto lambda = [n]() mutable { n += 5; std::cout << n << "\n"; };
lambda();
std::cout << n << "\n"; // 外部 n 不变
总结
Lambda 表达式是 C++ 高阶编程的重要工具,
捕获方式灵活(值捕获、引用捕获)
支持参数和返回值
可与 STL 算法无缝结合