Lambda 表达式
C++11 引入了 Lambda 表达式,为开发者提供了一种简洁、方便的方式来定义匿名函数。这一特性极大地提升了 C++ 的表达能力,使代码更加简洁和可读,尤其是在需要传递回调函数的场景下。
什么是 Lambda 表达式
Lambda 表达式是一个可以定义在任何地方的匿名函数,通常用于替代小型的函数对象或普通函数。它的语法如下:
[capture](parameters) -> return_type {
body
};
- capture:捕获列表,用于捕获上下文中的变量。
- parameters:参数列表,与普通函数类似。
- return_type:返回值类型(可选,如果能推导则可省略)。
- body:函数体,包含具体的操作逻辑。
Lambda 表达式的基本用法
示例 1:最简单的 Lambda 表达式
一个简单的例子是打印一条消息:
#include <iostream>
int main() {
auto sayHello = []() {
std::cout << "Hello, C++11 Lambda!" << std::endl;
};
sayHello();
return 0;
}
在这里:
[]
表示捕获列表为空。()
表示没有参数。std::cout
是 Lambda 表达式的逻辑。
示例 2:带参数的 Lambda 表达式
Lambda 表达式可以接受参数,就像普通函数一样:
#include <iostream>
int main() {
auto add = [](int a, int b) {
return a + b;
};
std::cout << "3 + 5 = " << add(3, 5) << std::endl;
return 0;
}
此示例中:
int a, int b
是参数列表。return a + b
是函数体。
示例 3:捕获变量
Lambda 表达式可以捕获外部作用域中的变量:
#include <iostream>
int main(