在C++中,Lambda表达式是一种用于定义匿名函数的特性,它允许你在需要函数的地方直接定义函数,而无需显式声明一个命名函数。Lambda表达式的一般形式为:
cpp
[capture list] (parameter list) -> return type {
// 函数体
}
capture list 指定了Lambda表达式内部可访问的外部变量。[=] 表示捕获外部作用域中的所有变量,按值传递方式;[&] 表示捕获外部作用域中的所有变量,按引用传递方式;也可以指定具体的变量进行捕获。
parameter list 是Lambda函数的参数列表,类似于普通函数的参数列表。
return type 是Lambda函数的返回类型,可以省略,编译器会根据函数体自动推导返回类型。
{} 内是Lambda函数的函数体,包含了函数的具体逻辑。
下面是一个简单的Lambda表达式的示例:
#include <iostream>
int main() {
int a = 10;
int b = 20;
// Lambda表达式定义
auto sum = [a, b]() {
return a + b;
};
// 调用Lambda函数并输出结果
std::cout << "Sum: " << sum() << std::endl;
return 0;
}
在这个示例中,我们定义了一个Lambda表达式 sum,它捕获了外部作用域中的变量 a 和 b,并返回它们的和。Lambda表达式定义后,我们调用它并输出了结果。Lambda表达式的灵活性和简洁性使得它成为C++中一个非常有用的特性,特别是在需要传递函数作为参数或在需要定义小型函数时。