C++ Lambda 表达式完全指南

C++ Lambda 表达式完全指南

Lambda 表达式是 C++11 引入的重要特性,它可以让我们在函数内部定义匿名函数,提高代码的灵活性和可读性。本文带你从基础到高级用法逐步解析 Lambda。


一、基础语法

cpp 复制代码
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};

    std::for_each(v.begin(), v.end(), [](int x){
        std::cout << x << " ";
    });
    std::cout << "\n";
}

二、捕获外部变量

Lambda 可以通过值捕获 = 或引用捕获 \& 外部变量。

cpp 复制代码
int main() {
    int a = 10;
    int b = 20;

    auto lambda1 = [=]() { std::cout << "a + b = " << a + b << "\n"; };
    lambda1();

    auto lambda2 = [&]() { a += 5; b += 5; };
    lambda2();
    std::cout << "a = " << a << ", b = " << b << "\n";
}

三、带参数和返回值

cpp 复制代码
auto add = [](int x, int y) -> int { return x + y; };
std::cout << "5 + 3 = " << add(5, 3) << "\n";

四、可变 Lambda

通过 mutable 可以修改值捕获的变量:

cpp 复制代码
int n = 10;
auto lambda = [n]() mutable { n += 5; std::cout << n << "\n"; };
lambda();
std::cout << n << "\n"; // 外部 n 不变

总结

Lambda 表达式是 C++ 高阶编程的重要工具,

捕获方式灵活(值捕获、引用捕获)

支持参数和返回值

可与 STL 算法无缝结合

相关推荐
代码地平线3 小时前
C++类与对象(中):默认成员函数与日期类实战
c++·笔记·算法
hansang_IR3 小时前
【题解】可持久化区间仿射区间和(Persistent Range Affine Range Sum)
c++·算法·线段树
瑞码空间3 小时前
01背包:动态规划的Hello World
c++·算法·0/1背包问题
鱼子星_3 小时前
【C++】反向迭代器:反向迭代器的底层认识与模拟实现
开发语言·c++·笔记·stl
郝学胜-神的一滴4 小时前
[简化版 GAMES 104] 现代游戏引擎 05:游戏引擎世界构建核心机制深度解析
c++·程序人生·unity·游戏引擎·计算机图形学·opengl
Darkwanderor4 小时前
C++的流简介和简单使用
开发语言·c++
乐观勇敢坚强的老彭4 小时前
C++ STL 常用容器的速查表
java·c++·算法
lingran__4 小时前
C++ STL map 与 set 底层剖析与模拟实现万字详解|基于红黑树,复刻 SGI-STL 泛型复用架构
开发语言·c++·stl·set·map·泛型编程·sgi-stl
星轨初途5 小时前
LeetCode 热题 100——day11 滑动窗口最大值
数据结构·c++·算法·leetcode·职场和发展
重生之小比特5 小时前
【初阶C++】内存管理
c++·内容运营