C++ Lambda表达式:你的代码小秘书(从入门到实战)


大家好呀,我是灰灰,今天咱们来聊聊C++里那个让代码变优雅的神器——Lambda表达式!它就像你随叫随到的代码小秘书,能随时随地创建临时函数,彻底告别写一堆函数对象的烦恼!准备好升级你的代码美学了吗?🚀


一、Lambda基础:为什么需要它?

1.1 传统方式的痛点

假设你要给vector排序,但需要自定义比较规则:

// 传统写法:定义函数对象
struct Compare {
   
    bool operator()(int a, int b) {
   
        return a > b; // 降序排序
    }
};

vector<int> nums = {
   3,1,4,2};
sort(nums.begin(), nums.end(), Compare());

缺点:要单独写个类,代码分散,可读性差!

1.2 Lambda的救场

vector<int> nums = {
   3,1,4,2};
sort(nums.begin(), nums.end(), [](int a, int b) {
   
    return a > b; // 降序排序
});

优势

  • 🚀 代码紧凑,逻辑一目了然
  • 🎯 无需定义额外函数/类
  • 🔥 支持捕获上下文变量

二、Lambda语法全解析

2.1 Lambda的"身份证"

完整Lambda表达式结构:

[捕获列表] (参数列表) mutable(可选) 异常属性(可选) -> 返回类型(可选) {
   
    // 函数体
}

2.2 核心部件拆解

(1) 捕获列表:决定Lambda能访问哪些外部变量
int base = 100;
auto lambda = [base](int x) {
    
    return x + base; // 捕获外部base
};
cout << lambda(5); // 输出105
(2) 参数列表:和普通函数参数一样
auto print = [
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值