lambda表达式

在C++中,lambda表达式是一种轻量级的匿名函数,可以在需要定义短小的、一次性使用的函数时非常方便。Lambda表达式的语法如下:

[capture](parameters) -> return_type {
    // function body
}

语法详解

1、[capture]: 捕获列表,用于指定在lambda表达式中如何捕获上下文中的变量。可以使用以下几种方式:

  • [&]:通过引用捕获所有外部作用域中的变量。
  • [=]:通过值捕获所有外部作用域中的变量。
  • [&x, y]:通过引用捕获变量 x,通过值捕获变量 y。
  • [this]:捕获当前类的this指针,以便在lambda表达式中访问类的成员变量和成员函数。

2、(parameters): 参数列表,类似于普通函数的参数列表。如果不需要参数,可以省略括号。

3、-> return_type: 返回类型,可以省略,如果编译器可以推断出返回类型的话。若省略,返回类型由函数体中的 return 语句推断。

4、{ // function body }: 函数体,包含lambda表达式的逻辑。

例子

1. 没有捕获的lambda表达式

auto lambda = []() {
    std::cout << "Hello, Lambda!" << std::endl;
};
lambda();  // 输出: Hello, Lambda!

这是一个简单的lambda表达式,不捕获任何外部变量,不接受任何参数,只打印一行文字。

2. 捕获外部变量的lambda表达式

int x = 10;
auto lambda = [x]() {
    std::cout << "x = " << x << std::endl;
};
lambda();  // 输出: x = 10

这里,lambda表达式通过值捕获了外部变量 x。即使在lambda表达式定义之后,外部的 x 发生变化,lambda表达式内部的 x 值仍然是定义时的值。

3. 修改捕获的变量

int x = 10;
auto lambda = [&x]() {
    x = 20;
};
lambda();
std::cout << x << std::endl;  // 输出: 20

通过引用捕获变量 x,lambda表达式可以修改 x 的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王成长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值