C++Lambda表达式

在 C++11 标准中引入了 lambda 表达式

例如:

auto cmp = [](const ListNode *a, const ListNode *b) {
    return a->val > b->val; 
};

这里定义了一个名为 cmp 的变量,使用 auto 关键字让编译器自动推断其类型。这个变量实际上是一个可调用对象(在这种情况下,类似于函数指针或函数对象)

在 C++ 中,auto cmp = [](const ListNode *a, const ListNode *b) { return a->val > b->val; };这里的方括号[]具有以下重要作用:

一、捕获列表

  1. 空捕获列表:在这个例子中,方括号内为空,表示这个 lambda 表达式不捕获任何外部变量。如果需要捕获外部变量,可以在方括号内指定捕获方式,例如[&]表示按引用捕获所有外部变量,[=]表示按值捕获所有外部变量,[x,y]表示按值捕获变量xy等。

二、定义 lambda 表达式的语法要求

  1. 标识 lambda 表达式:方括号是 C++ 中定义 lambda 表达式的一部分语法结构。它明确地告诉编译器,接下来的代码是一个 lambda 表达式,而不是一个普通的函数。

  2. 与函数对象区分:没有方括号的话,编译器可能会将其误认为是一个普通的函数声明或其他语法结构。方括号帮助编译器准确地识别这是一个 lambda 表达式,并且可以根据其特性进行相应的处理,例如自动推断类型、支持闭包等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值