在C++11中,Lambda表达式是一种匿名函数的形式,它可以在需要函数对象的地方使用。Lambda表达式的基本语法如下:
[capture](parameters) -> return_type { body }
其中,capture
是可选的,用于捕获外部变量;parameters
是参数列表;return_type
是返回类型;body
是函数体。
下面是一些Lambda的用法示例:
- 无参数的Lambda表达式:
[]() {
// Lambda body
};
- 带参数的Lambda表达式:
[](int x, int y) {
// Lambda body
};
- 带返回值的Lambda表达式:
[](int x, int y) -> int {
// Lambda body
return x + y;
};
- 捕获外部变量的Lambda表达式:
int x = 5;
[y]() {
// Lambda body
std::cout << y << std::endl;
};
在Lambda表达式中,可以使用捕获列表来捕获外部变量。捕获列表可以有以下几种形式:
[var]
:值捕获,将外部变量var
的值复制到Lambda表达式中;[&var]
:引用捕获,将外部变量var
作为引用传递给Lambda表达式;[=]
:默认值捕获,自动推导捕获列表中的变量,并按值捕获;[&]
:默认引用捕获,自动推导捕获列表中的变量,并按引用捕获。
Lambda表达式在C++11中引入了一种更简洁、灵活的函数定义方式,使得代码更加清晰和易读。