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

相关推荐
fangzt20102 小时前
插件系统:让其他人也能给编辑器写节点
c++
诙_2 小时前
深入理解C++文件操作
开发语言·c++
ShoreKiten2 小时前
cpp考前急救
数据结构·c++·算法
Byron Loong2 小时前
【基础】c,c++编译过程
c语言·c++
Hesionberger3 小时前
LeetCode79:单词搜索DFS回溯详解
java·开发语言·c++·python·算法·leetcode·c#
MZ_ZXD0013 小时前
springboot音乐播放器系统-计算机毕业设计源码76317
java·c语言·c++·spring boot·python·flask·php
Emberone4 小时前
C++ list 详解:从入门到模拟实现,彻底搞懂双向链表
c++·list
Cando学算法4 小时前
欧拉回路(一笔画)
数据结构·c++·图论
我不是懒洋洋4 小时前
手写一个并查集:从原理到最小生成树实战
c语言·c++·经验分享·算法