详细讲解一下lambda表达式,并举例说明
时间: 2024-09-24 18:01:55 浏览: 33
Lambda表达式是一种C++11引入的新特性,它是一种匿名函数,可以在运行时创建并传递给其他函数,特别是那些期望一个简单功能的回调函数。Lambda表达式的语法简洁,使得代码更易于理解和编写。
其基本形式如下:
```cpp
[capture_list] (parameters) -> return_type {
// function body
}
```
- `capture_list`: 可选,指定捕获外部变量,可以是`=`, `&` 或者 `[]`(按值、引用或闭包捕获)。
- `parameters`: 函数参数列表,可以为空。
- `-> return_type`: 返回类型,如果没有明确指定则默认隐式为`void`。
- `{ function_body }`: 匿名函数体,包含具体的代码逻辑。
例如,一个简单的求平方的lambda表达式:
```cpp
auto square = [](int x) -> int { return x * x; };
std::cout << square(5); // 输出25
```
在这个例子中,`[]`表示无捕获,`x`是输入参数,`-> int`指定了返回类型。函数体`{ return x * x; }`就是计算平方的功能。
另一个例子,捕获外部变量的情况:
```cpp
int count = 0;
auto counter = [count](()-> void) { count++; };
counter(); // count 现在是1
```
这里`[count]`表示按引用捕获`count`变量,每次调用`counter`都会增加`count`。
阅读全文