c++11 lambda定义函数变量
时间: 2024-08-14 09:04:01 浏览: 55
C++-lambda闭包函数.pdf
C++11引入了lambda表达式,这是一种简洁的方式来定义匿名函数。Lambda函数可以在需要函数对象的地方直接使用,无需显式地定义一个完整的函数。它们通常包含以下几个部分:
1. `(parameters)`:捕获列表,用于指定函数是否捕获外部作用域的变量。可以是值捕获(`auto&`), 引用捕获(`auto`),或是无捕获`(no capture)`.
- `[] (parameters)`:无捕获的情况,表示lambda不会修改外部变量。
- `(params) -> return_type { body }`: 参数列表、返回类型和主体。
2. `-> return_type`:可选的,如果lambda表达式有明确的返回类型。
3. `{ body }`:函数体,其中可以包含任意C++代码。
例如,一个简单的lambda函数可能是这样的:
```cpp
std::sort(my_vector.begin(), my_vector.end(), [](int a, int b) {
return a > b;
});
```
这里定义了一个比较两个整数并按升序排序的匿名函数。
阅读全文