面试题答案
一键面试代码实现
#include <iostream>
int main() {
auto add = [](int a, int b) { return a + b; };
int result = add(3, 5);
std::cout << "两数之和为: " << result << std::endl;
return 0;
}
Lambda表达式捕获列表的作用
捕获列表用于Lambda表达式访问其定义所在作用域中的变量。通过捕获列表,Lambda表达式可以使用外部变量,使得Lambda表达式不仅仅依赖于传入的参数,还能与外部环境交互。
常见的捕获方式
- 值捕获:使用
[变量名]
的形式,将外部变量以值的方式复制到Lambda表达式内部。例如[a]
,此时Lambda表达式内部得到的是a
的一个副本,对其修改不会影响外部的a
。 - 引用捕获:使用
[&变量名]
的形式,将外部变量以引用的方式引入Lambda表达式内部。例如[&a]
,此时Lambda表达式内部对a
的修改会直接影响外部的a
。 - 隐式捕获:分为隐式值捕获
[=]
和隐式引用捕获[&]
。[=]
会自动以值的方式捕获所有在Lambda表达式中使用到的外部变量;[&]
会自动以引用的方式捕获所有在Lambda表达式中使用到的外部变量。