MST

星途 面试题库

面试题:C++ Lambda表达式的基础使用

请用C++ Lambda表达式实现一个简单的函数,该函数接收两个整数参数,返回它们的和。并阐述Lambda表达式捕获列表的作用,列举至少两种常见的捕获方式。
17.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

代码实现

#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表达式不仅仅依赖于传入的参数,还能与外部环境交互。

常见的捕获方式

  1. 值捕获:使用[变量名]的形式,将外部变量以值的方式复制到Lambda表达式内部。例如[a],此时Lambda表达式内部得到的是a的一个副本,对其修改不会影响外部的a
  2. 引用捕获:使用[&变量名]的形式,将外部变量以引用的方式引入Lambda表达式内部。例如[&a],此时Lambda表达式内部对a的修改会直接影响外部的a
  3. 隐式捕获:分为隐式值捕获[=]和隐式引用捕获[&][=]会自动以值的方式捕获所有在Lambda表达式中使用到的外部变量;[&]会自动以引用的方式捕获所有在Lambda表达式中使用到的外部变量。