C++知识积累:浅析Lambda表达式

本文详细介绍了C++11中的Lambda表达式,包括其引入背景、创建方式以及捕获列表的使用。Lambda表达式使得代码更简洁、可读性更强,但使用时需要注意值捕获与引用捕获的区别,以及何时适合使用Lambda表达式。
摘要由CSDN通过智能技术生成

     

目录

1 引言

2 如何创建Lambda表达式

3 总结


Lambda是C++ 11的新特性之一,查看网上对其的解释往往晦涩难懂,在这说下自己的理解。

1 引言

    我们先来看个排序的例子:

bool cmp(const int &a, const int &b)  //定义比较函数
{
	return a > b;
}

int main()
{
	vector<int>v{ 1,3,2,4,6,5,4 };

	sort(v.begin(), v.end(), cmp);  //降序排列

	for (auto x : v)cout << x << endl;
    return 0;
}

       在这段程序中,我们主要是通过sort函数实现排降序的功能,我们都知道,sort函数默认执行的是升序排列,如果要进行降序排列的话,我们就需要自己定义一个比较函数。虽然这里不算错,但是还是有些问题:

①如果我在其他地方还需要定义比较函数(比如说用sort对对象排序、字符串排序....),那就又要定义如同cmp1、cmp2....之类的,一旦多了,那函数的命名就麻烦了;

②比较函数一般都是临时调用一次,后续很大可能都不会再使用了,如果还专门拿出来定义,那就显得代码不是那么简洁了;

③试想一下,当我们想查看cmp函数定义的时候,就需要转到代码中定义cmp的地方,然后再回到sort,也有可能像这样的操作不止一次,这似乎就有些麻烦了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值