【C++】C++11 lambda表达式,C++ Lambda表达式详解,C++11中的新特性

马肤

温馨提示:这篇文章已超过450天没有更新,请注意相关的内容是否还可用!

摘要:,,C++11引入了lambda表达式,这是一种简洁、灵活的代码表达方式。Lambda表达式允许程序员创建匿名函数,可以方便地编写简短、内联的代码片段,适用于各种场景,如排序、遍历等。通过lambda表达式,可以轻松地捕获外部变量的值,并在函数体内使用。这一特性大大增强了C++编程语言的实用性和便捷性。

【C++】C++11 lambda表达式,C++ Lambda表达式详解,C++11中的新特性 第1张

👀樊梓慕:个人主页

🎥个人专栏:

《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表达式就是作为比较函数进行调用的。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码