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

相关推荐
MC皮蛋侠客2 小时前
Google Test 单元测试指南
c++·单元测试·google test
艾莉丝努力练剑2 小时前
【Linux:文件】Ext系列文件系统进阶
linux·运维·服务器·c++·文件系统·文件io·ext
basketball6164 小时前
C++ NULL 和 nullptr 区别 以及 nullptr 的核心实现
java·开发语言·c++
Fre丸子_6 小时前
自定义文件夹选取功能
c++
思麟呀8 小时前
C++工业级日志项目(六)异步日志器
linux·c++·windows
PAK向日葵8 小时前
从零实现 Python 虚拟机(二):S.A.A.U.S.O 的总体架构设计
c++·python
无限进步_8 小时前
【C++】weak_ptr、循环引用与线程安全
开发语言·数据结构·c++·算法·安全
咩咦9 小时前
C++学习笔记30:友元类、内部类和封装
c++·学习笔记·类和对象·封装·内部类·友元类·friend
黄小白的进阶之路9 小时前
C++提高编程---3.6 STL-常用容器-queue 容器【P213~P214】
c++
ID_180079054739 小时前
小红书评论 API 接口详解与实战开发
java·jvm·c++