解释Lambda 表达式C++
时间: 2023-09-04 19:08:52 浏览: 95
Lambda表达式是C++11引入的一种语法,它可以用于创建匿名函数对象。Lambda表达式可以在需要函数的任何地方使用,例如可以将Lambda表达式作为参数传递给函数或算法,或将Lambda表达式作为返回值从函数中返回。Lambda表达式可以使代码更简洁、更易于阅读和维护,特别是在使用函数式编程概念时。
Lambda表达式的一般形式为:
```
[capture list] (parameter list) -> return type { function body }
```
其中,capture list指定了Lambda表达式所需要捕获的变量;parameter list指定了Lambda表达式的参数列表;return type指定了Lambda表达式的返回类型;function body指定了Lambda表达式的函数体。
例如,以下Lambda表达式将两个整数相加并返回其和:
```
[] (int a, int b) -> int { return a + b; }
```
在Lambda表达式中,可以使用auto关键字自动推断返回类型,如下所示:
```
[] (int a, int b) { return a + b; }
```
此外,Lambda表达式也可以作为参数传递给函数或算法,例如:
```
std::vector<int> v = {1, 2, 3, 4, 5};
std::for_each(v.begin(), v.end(), [] (int n) { std::cout << n << ' '; });
```
以上代码使用Lambda表达式作为for_each算法的第三个参数,输出了向量v中的所有元素。
需要注意的是,Lambda表达式可以访问捕获列表中的变量,但不能修改它们的值,除非使用mutable关键字来声明Lambda表达式是可变的。Lambda表达式的适用范围很广,可以用于实现回调函数、函数对象、谓词等。
阅读全文