C++: lambda表达式全解析

lambda表达式

lambda表达式一般用于定义匿名函数,使得代码更加灵活简洁。lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更简洁,并且可以在函数内部定义。

语法:[captures](params) ->trailing-return-type{body}

captures 捕获列表,lambda可以把上下文变量以值或引用的方式捕获,在body中直接使用

params 是传入的参数列表

->trailing-return-type表示返回值类型,可省略,但要写出时->和trailing-return-type必须同时出现

body 函数体,函数的具体逻辑

本文中程序可通过Visual Studio直接运行验证

1参数列表的使用

#include<iostream>

using namespace std;

int main() {

       auto plus = [](int v1, int v2) -> int { return v1 + v2; };

       int sum = plus(1, 2);

       cout << sum << endl;

}

#include<vector>

#include <algorithm>

#include<iostream>

using namespace std;

struct Item

{

    Item(int aa, int bb) : a(aa), b(bb) {}

    int a;

    int b;

};

int main()

{

    std::vector<Item> vec;

    vec.push_back(Item(1, 19));

    vec.push_back(Item(10, 3));

    vec.push_back(Item(3, 7));

    vec.push_back(Item(8, 12));

    vec.push_back(Item(2, 1));

    //打印vec中的item成员

    std::for_each(vec.begin(), vec.end(),

        [](const Item& item) { std::cout << item.a << " " << item.b << std::endl; });

    return 0;

}

2 捕获列表的使用

lambda表达式的可捕获的量的是在其定义点周围可见的局部变量和静态变量,以及非静态成员函数的this指针

[=] 按值(复制)的方式捕获所有可捕获的量

[&] 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小于小于大橙子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值