C++ Lambda 表达式

概述

Lambda 表达式是 C++11 引入的匿名函数对象,用于创建内联的、临时的函数,常用于算法参数和回调函数。

基本语法

复制代码
复制代码
复制代码
[capture](parameters) -> return_type { 
    // 函数体
}

捕获列表

  • []:不捕获任何变量

  • [=]:以值方式捕获所有外部变量

  • [&]:以引用方式捕获所有外部变量

  • [x, &y]:混合捕获(x 值捕获,y 引用捕获)

示例代码

复制代码
复制代码
复制代码
// 简单示例
auto add = [](int a, int b) { return a + b; };
cout << add(3, 4);  // 输出: 7

// 带捕获的示例
int factor = 2;
auto multiply = [factor](int x) { return x * factor; };

// STL 算法中使用
vector<int> nums = {1, 2, 3, 4};
for_each(nums.begin(), nums.end(), [](int n) {
    cout << n * 2 << " ";
});

特性说明

  1. 自动类型推导 :可使用 auto存储 lambda

  2. 可变 lambda :使用 mutable关键字可修改值捕获的变量

  3. 尾置返回类型:可显式指定返回类型

应用场景

  • STL 算法(sort、find_if 等)

  • 异步编程的回调函数

  • 一次性使用的简单函数逻辑

注意事项

  1. 引用捕获需注意变量生命周期

  2. 值捕获在 lambda 创建时固定

  3. C++14 起支持泛型 lambda 和初始化捕获

Lambda 提供了简洁的函数式编程支持,是现代 C++ 的重要组成部分。

相关推荐
clint45617 小时前
C++进阶(1)——前景提要
c++
夜悊21 小时前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴1 天前
CMake 021: IF 条件判据详诠
c++·cmake
_wyt0012 天前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
玖玥拾2 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
один but you2 天前
constexpr函数
c++
凡人叶枫2 天前
Effective C++ 条款41:了解隐式接口和编译期多态
java·开发语言·c++·effective c++
凡人叶枫2 天前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
小胖xiaopangss2 天前
BRpc使用
c++·rpc
-森屿安年-2 天前
63. 不同路径 II
c++·算法·动态规划