C++ - lambda表达式

本文详细介绍了Lambda表达式的定义,包括语法、捕获列表的不同类型和使用实例。通过C++代码展示了值捕获、引用捕获等,并提供了实际编程应用的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、语法

如何定义一个lambda表达式?

[捕获列表](参数列表)->返回类型 
{
    //函数体
}

2、[]捕获列表

捕获列表分为以下几种:

1)值捕获  ;2)引用捕获  ;3)隐式捕获;4)表达式捕获

语法形式分为以下几种:

1) [ ]:不捕获外部变量

2)[name]:按值捕获变量name

3) [&name]:按引用捕获变量name

4) [this]:捕获当前变量,表达式可以访问该对象的所有成员

5)[=] 值捕获所有变量

6) [&] 引用捕获所有变量

7)[=,&x] 默认按照值捕获所有变量,除了x按照引用捕获

8)[&,x]:默认按照引用捕获所有变量,除了x按照值捕获

9) [name1=expr1,name2=expr2,...]: 捕获一系列表达式

3、详细的例子

#include <iostream>

using namespace std;

int main(int argc,char** argv)
{
    auto lambda1 = [](){
        cout<<"this is a lambda1";
    };

    lambda1();


    int a = 10;
    int b = 20;

    auto lambda2 = [a](){
        cout<<"this is a lambda2 and a = "<<a<<endl;
    };

    lambda2();

    auto lambda3 = [&a]() {
        a *= 2;
        cout<<"this a lambda3 and a = "<<a<<endl;
    };

    lambda3();

    auto lambda4 = [a,&b](){
        cout<<"this a lambda4 and a = "<<a<<" b = "<<b<<endl;
    };

    lambda4();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

莫忘输赢

莫忘输赢 - 收钱袋

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

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

打赏作者

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

抵扣说明:

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

余额充值