C++ Lambda 表达式与函数式编程
Lambda 使 C++ 支持函数式风格,简洁且灵活。
1. 基本语法
[capture](parameters) -> return_type { body }std::vector<int> nums = {1,2,3,4,5};
// 过滤偶数
auto it = std::remove_if(nums.begin(), nums.end(), [](int n) {
return n % 2 == 0;
});2. 捕获方式
[=]:值捕获(拷贝)[&]:引用捕获[this]:捕获当前对象[a, &b]:混合
int factor = 2;
auto multiply = [factor](int x) { return x * factor; };3. 泛型 Lambda(C++14)
auto add = [](auto a, auto b) { return a + b; };
add(3, 4); // 7
add(1.2, 3.4); // 4.64. 捕获 this 的副本(C++17)
class Processor {
int factor = 2;
public:
void run() {
auto func = [*this](int x) { return x * factor; };
}
};Lambda 与 STL 算法结合使用,代码简洁高效。
