温馨提示:这篇文章已超过450天没有更新,请注意相关的内容是否还可用!
摘要:,,C++11引入了lambda表达式,这是一种简洁、灵活的代码表达方式。Lambda表达式允许程序员创建匿名函数,可以方便地编写简短、内联的代码片段,适用于各种场景,如排序、遍历等。通过lambda表达式,可以轻松地捕获外部变量的值,并在函数体内使用。这一特性大大增强了C++编程语言的实用性和便捷性。
👀樊梓慕:个人主页
🎥个人专栏:
《C语言》、《数据结构》、《蓝桥杯试题》、《LeetCode刷题笔记》、《实训项目》、《C++》、《Linux》、《算法》等。
🌝每一个不曾起舞的日子,都是对生命的辜负。
目录:
一、C++11引入『 lambda表达式』的原因
在现实案例中,排序往往是针对复杂类型的,比如网购商品具有多种属性,用户可以选择不同的排序策略,如按照价格、口碑等,以前,我们可以通过实现不同的仿函数来达到根据不同属性排序的目的,但这样会导致代码可读性差,当项目复杂时,不友好的命名方式可能使得代码难以阅读和理解,lambda表达式的引入是为了简化代码,提高代码的可读性,它可以看作是一种匿名函数。
lambda表达式的语法
lambda表达式书写格式:[capture-list](parameters)mutable->return-type{statement}。
1、[capture-list]:捕捉列表,该列表总是出现在lambda函数的开始位置,编译器根据[]来判断接下来的代码是否为lambda函数,捕捉列表能够捕捉上下文中的变量供lambda函数使用。
2、(parameters):参数列表,与普通函数的参数列表一致,如果不需要参数传递,则可以连同()一起省略。
3、mutable:默认情况下,lambda函数是一个const函数,mutable可以取消其常量性,但请注意,当使用mutable修饰符时,参数列表不可省略(即使参数为空),在实际应用中,这个关键字的使用频率并不高。
4、->return-type:返回值类型,可以用这种方式声明函数的返回值类型,如果没有返回值,此部分可以省略,在返回值类型明确的情况下,也可以省略,由编译器进行推导,因此在实际书写时,我们通常省略这部分内容。
5、{statement}:函数体,在该函数体内,除了可以使用其参数外,还可以使用所有捕获到的变量,一个简单的lambda表达式例子为:[]{};,当然更复杂的用法可以根据需要进行书写,例如排序的lambda表达式:sort(v.begin(), v.end(), [](const Goods& g1, const Goods& g2){return g1._price < g2._price;});表示按照商品价格升序排序,这样可以直接看到排序的逻辑,无需查找定义部分,提高了代码的可读性。
如何调用lambda表达式
在代码中可以直接使用lambda表达式作为函数参数进行调用,例如上面的sort函数中的lambda表达式就是作为比较函数进行调用的。
还没有评论,来说两句吧...