Lambda 表达式是 C++11 中引入的一种用于创建匿名函数的特殊语法。它允许我们在代码中定义一个临时的、无名的函数对象,而无需显式定义一个函数。
Lambda 表达式的一般语法如下:
[capture list] (parameter list) -> return type {
// 函数体
}
其中,capture list 是捕获列表,用于指定需要在 lambda 表达式中使用的外部变量。parameter list 是函数参数列表,用于指定 lambda 函数的参数。return type 是返回值类型,用于指定 lambda 函数的返回类型。函数体 则是 lambda 函数的具体实现。
以下是一个简单的 lambda 表达式示例:
#include <iostream>
int main() {
int x = 10;
int y = 20;
// lambda 表达式,捕获 x 和 y 变量,并计算它们的和
auto sum = [x, y]() -> int {
return x + y;
};
// 调用 lambda 函数并输出结果
std::cout << "Sum: " << sum() << std::endl;
return 0;
}
在上面的示例中,我们创建了一个 lambda 表达式,它捕获了外部变量 x 和 y,并计算它们的和。然后我们通过调用 lambda 函数并输出结果来使用这个 lambda 表达式。
Lambda 表达式非常灵活,可以用于各种场景,例如在 STL 算法中作为谓词(predicate)、用于多线程编程中、在算法中进行数据处理等等。由于它能够直接捕获外部变量,使得代码更加简洁、清晰和易于维护。