Lambda 表达式是 C++11 引入的一个重要特性,它提供了一种简洁的方式来定义匿名函数对象,可用于临时创建一个小的函数体,而无需显式定义一个命名的函数或函数对象。
语法结构
Lambda 表达式的基本语法如下:
[capture list] (parameter list) mutable exception attribute -> return type {
function body
}
- 捕获列表(capture list):用于指定 Lambda 表达式可以访问的外部变量,它可以为空。捕获方式有值捕获、引用捕获等。
- 参数列表(parameter list):与普通函数的参数列表类似,用于传递参数给 Lambda 表达式。如果没有参数,可以省略括号。
mutable
(可选):默认情况下,Lambda 表达式中的值捕获变量是只读的,使用mutable
关键字可以修改这些变量。- 异常属性(exception attribute):指定 Lambda 表达式可能抛出的异常,例如
noexcept
表示该 Lambda 表达式不会抛出异常。 - 返回类型(return type):指定 Lambda 表达式的返回类型。如果编译器可以根据函数体推断出返回类型,这部分可以省略。
- 函数体(function body):包含 Lambda 表达式