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++ 的重要组成部分。

相关推荐
学习智者4 小时前
《玄》IDE v3.8.2重磅发布:数据外置+全链路优化
开发语言·c++·ide·中文语言 玄
anew___13 小时前
蜂鸣器播放音乐——让 Arduino 唱出旋律
c++·stm32·单片机·嵌入式硬件·c
stolentime14 小时前
洛谷P10515 转圈题解
c++·算法·数学建模·贪心算法
tdtsmt15 小时前
穿戴硬件量产工艺实录:天地通电子智能手表主板 SMT 贴片案
c++
m0_7345717618 小时前
深入理解C++ 析构函数<一>基本概念
开发语言·c++
t-think19 小时前
C++ string 类(上)—— string类初识与常用接口详解
开发语言·c++
cpp_learners20 小时前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
开发语言·c++·责任链模式
郝学胜_神的一滴20 小时前
C++11 工程级应用 12:编译期类型魔法,干掉重复与臃肿的代码
c++·visual studio
David猪大卫21 小时前
【C++修炼】哈希表的实现
数据结构·c++·笔记·学习·算法·哈希算法·散列表
广州山泉婚姻21 小时前
列表初始化:C++11全新初始化体系
c++·人工智能