跳到主要内容

简述什么是C++ lambda 函数 ?

参考答案:

C++ lambda 函数是一种匿名函数,也被称为闭包或者内嵌函数。它允许你定义一个函数并在定义后立即使用它,而不需要给它一个名字。Lambda 函数特别有用在需要一个函数对象但又不希望编写完整的函数定义的情况下,比如在 STL 算法或者需要函数对象作为参数的函数中。

Lambda 函数的语法如下:

[capture](parameters) -> return_type { body_of_lambda }

其中:

  • capture:捕获子句,定义了哪些外部变量可以在 lambda 函数体内部被访问。可以有多种捕获方式,比如 [=] 表示通过值捕获所有外部变量,[&] 表示通过引用捕获所有外部变量,也可以显式地指定要捕获的变量,如 [a, &b]
  • parameters:参数列表,就像普通函数的参数列表一样。
  • return_type:返回类型,可以省略,编译器会自动推导。
  • body_of_lambda:函数体,定义了 lambda 函数的行为。

例如,下面是一个简单的 lambda 函数,它接受两个整数参数并返回它们的和:

auto sum = [](int a, int b) -> int { return a + b; };

然后你可以像调用普通函数一样调用这个 lambda 函数:

int result = sum(3, 4);  // result 现在是 7

Lambda 函数也可以捕获外部变量,比如:

int x = 10;
auto add_x = [x](int a) -> int { return a + x; };
int result = add_x(5);  // result 现在是 15

在这个例子中,add_x 这个 lambda 函数捕获了外部的 x 变量,并在函数体内部使用它。