只谈C++11新特性 - Lambda 表达式

Lambda 表达式

C++11 引入了 Lambda 表达式,为开发者提供了一种简洁、方便的方式来定义匿名函数。这一特性极大地提升了 C++ 的表达能力,使代码更加简洁和可读,尤其是在需要传递回调函数的场景下。

什么是 Lambda 表达式

Lambda 表达式是一个可以定义在任何地方的匿名函数,通常用于替代小型的函数对象或普通函数。它的语法如下:

[capture](parameters) -> return_type {
   
    body
};
  • capture:捕获列表,用于捕获上下文中的变量。
  • parameters:参数列表,与普通函数类似。
  • return_type:返回值类型(可选,如果能推导则可省略)。
  • body:函数体,包含具体的操作逻辑。

Lambda 表达式的基本用法

示例 1:最简单的 Lambda 表达式

一个简单的例子是打印一条消息:

#include <iostream>

int main() {
   
    auto sayHello = []() {
   
        std::cout << "Hello, C++11 Lambda!" << std::endl;
    };
    sayHello();
    return 0;
}

在这里:

  • [] 表示捕获列表为空。
  • () 表示没有参数。
  • std::cout 是 Lambda 表达式的逻辑。

示例 2:带参数的 Lambda 表达式

Lambda 表达式可以接受参数,就像普通函数一样:

#include <iostream>

int main() {
   
    auto add = [](int a, int b) {
   
        return a + b;
    };

    std::cout << "3 + 5 = " << add(3, 5) << std::endl;
    return 0;
}

此示例中:

  • int a, int b 是参数列表。
  • return a + b 是函数体。

示例 3:捕获变量

Lambda 表达式可以捕获外部作用域中的变量:

#include <iostream>

int main(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值