C++ Lambda表达式是C++11引入的一种函数对象,它提供了一种方便、灵活的方式来定义匿名函数。Lambda表达式常用于函数式编程风格和STL算法中。
Lambda表达式的基本语法如下:
[capture-list](parameter-list) -> return-type { body }
-
capture-list
:捕获列表,用于指定外部变量的访问方式。可以省略或者包含一个或多个以逗号分隔的捕获项。- 捕获项可以是按值捕获(
=
)或按引用捕获(&
)。 - 按值捕获会复制捕获的变量的值到Lambda表达式内部,而按引用捕获则是引用外部变量。
- 还可以使用捕获初始化器(
=
或&
后面加变量名和初始值)来指定捕获的变量及其初始值。
- 捕获项可以是按值捕获(
-
parameter-list
:参数列表,指定Lambda表达式的参数。与普通函数的参数列表类似。 -
return-type
:返回类型,指定Lambda表达式的返回类型。可以省略,让编译器自动推断返回类型。 -
body
:函数体,指定Lambda表达式的执行逻辑。可以包含任意合法的C++语句。
以下是一个简单的Lambda表达式示例,用于对一个整数数组中的元素进行平方运算并打印结果:
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> nums = {1, 2, 3, 4, 5};
// 使用Lambda表达式对数组元素进行平方运算并打印结果
std::for_each(nums.begin(), nums.end(), [](int num) {
int square = num * num;
std::cout << square << " ";
});
return 0;
}
在上述示例中,我们使用了Lambda表达式 [](int num) {...}
对std::for_each()
算法进行参数化。Lambda表达式使用一个参数 num
来接收每个数组元素的值,并计算平方,然后通过 std::cout
打印结果。
Lambda表达式在现代C++编程中非常常用,它能够简化代码、提高可读性,并且可以与标准库中的算法和容器等一起使用。您可以根据具体的需求来灵活地使用Lambda表达式。