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

相关推荐
兔兔兔兔112 分钟前
记录C++ 11
开发语言·c++
码匠许师傅20 分钟前
【C++ 面试真题】32. 聊聊 C++ 的原子变量与无锁编程
java·c++·面试
wabs66630 分钟前
关于栈【力扣150.逆波兰表达式求值的思考】
数据结构·c++·算法·leetcode··代码随想录
欧特克_Glodon37 分钟前
OpenCV计算机视觉开发入门与实践<十七>:点运算与灰度变换概述
c++·人工智能·opencv·计算机视觉
牛油果子哥q42 分钟前
C++序列式容器深度精讲:vector/list/deque底层实现、扩容原理、迭代器失效、性能对比、工程选型避坑
开发语言·c++·list
啦啦啦啦啦zzzz1 小时前
升序链表的定时器
linux·服务器·网络·数据结构·c++·链表
WBluuue1 小时前
数据结构与算法:带权并查集
数据结构·c++·算法
渡我白衣1 小时前
Acceptor模块的设计与实现
java·linux·服务器·开发语言·网络·c++·人工智能
程序员AlbertTu1 小时前
M01 | 浮点数与误差:数值计算的世界观
c++·数值运算
沫璃染墨1 小时前
《从零入门Linux系统篇(二十八):文件篇·一——Linux为什么“万物皆文件”:从C语言文件流到系统调用》
linux·运维·服务器·开发语言·c++·文件