_编程语言_C++_Lambda函数与表达式

  C++11提供了对匿名函数的支持,称为Lambda表达式函数

Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值。

Lambda 表达式本质上与函数声明非常类似:

//[capture](parameters)->return-type{body}
[](int x, int y){ return x < y ; }

 

如果没有参数可以表示为:

//[capture](parameters){body}
[]{ ++global_x; } 

 

更复杂的例子

[](int x, int y) -> int { int z = x + y; return z + x; }

例中,一个临时的参数 z 被创建用来存储中间结果。如同一般的函数,z 的值不会保留到下一次该不具名函数再次被调用时。

如果 lambda 函数没有传回值(例如 void),其回返类型可被完全忽略。

 

在Lambda表达式内可以访问当前作用域的变量,这是Lambda表达式的闭包(Closure)行为。 与JavaScript闭包不同,C++变量传递有传值和传引用的区别。可以通过前面的[]来指定:

[]      // 沒有定义任何变量。使用未定义变量会引发错误。
[x, &y] // x以传值方式传入(默认),y以引用方式传入。
[&]     // 任何被使用到的外部变量都隐式地以引用方式加以引用。
[=]     // 任何被使用到的外部变量都隐式地以传值方式加以引用。
[&, x]  // x显式地以传值方式加以引用。其余变量以引用方式加以引用。
[=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。

 

 

另外有一点需要注意。对于[=]或[&]的形式,lambda 表达式可以直接使用 this 指针。但是,对于[]的形式,如果要使用 this 指针,必须显式传入:

[this]() { this->someFunc(); }();

 

转载于:https://www.cnblogs.com/zpsoe/p/7049550.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Spring Boot和MongoDB快速进行Web应用原型设计

回到我以前的项目之一&#xff0c;我被要求制作一些应急申请。 时间表紧张&#xff0c;范围简单。 内部编码标准是PHP&#xff0c;因此尝试建立经典的Java EE堆栈将是一个真正的挑战。 而且&#xff0c;说实话&#xff0c;完全过大了。 那怎么办 我趁机尝试了Spring。 我以前使…

栈计算机术语,计算机数据结构词汇中英对照

小编为大家整理了计算机数据结构词汇中英对照&#xff0c;希望对你有帮助哦!计算机数据结构词汇中英对照&#xff1a;栈 stack队列 queue串 string数组 array树 tree图 grabh查找&#xff0c;线索 searching更新 updating排序(分类) sorting插入 insertion数据抽象 data abstra…

查询分析器在哪里_你应该知道的3种Node.js分析器类型

Node.js类似于许多其他编码语言&#xff0c;因为它需要与正确的工具结合使用来调试程序&#xff0c;克服任何瓶颈并优化其功能。使用正确的分析器&#xff0c;您可以毫不费力地实现这一目标&#xff0c;尽管它们都不是完美的。在编码中&#xff0c;分析器是一种动态程序分析软件…

Linux 学习重点内容(第二节)

#Linux 学习重点内容 第一天 常用命令 第二天 系统管理 第三天 网络应用 第四天 LAMP产品级环境搭建 第五天 Apache服务器配置 第六天 LNMP快速环境部署-Nginx服务配置 ##目标 具备使用Linux开发能力 服务器简单维护管理 --- ##…

全国计算机一级选择题汇总,全国计算机一级考试选择题训练及答案

全国计算机一级考试选择题训练及答案练习题一1、 将二进制数110B左移一位后其等值的十进制数为()。A、6 B、1100 C、12 D、32、 某微型机的CPU中含有32条地址线、28位数据线及若干条控制信号线&#xff0c;对内存按字节寻址&#xff0c;其最大内存空间是()。A、4MBB、256MBC、2…

python url拼接_教你写python爬虫——用python爬原图

环境&#xff1a;python3.6 pycharm“猎物”&#xff1a;http://www.polayoutu.com &#xff08;仅学习用&#xff09;动机1&#xff1a;想要爬一些尺寸比较大&#xff08;不是尺度&#xff09;的美图养养眼&#xff0c;仅此而已&#xff1b;动机2&#xff1a;学习python爬虫&…

Devoxx的Red Hat Engineers提供了更多Java EE

现在是Devoxx比利时时间&#xff01; 最后。 今天的一切都随着大学会议的开始而开始&#xff0c;会议本身将于明天早晨开始。 我们都非常兴奋&#xff0c;因为这是欧洲的重大事件。 红帽很荣幸今年再次成为赞助商。 我们将在现场举行14次会议&#xff0c;一个展位–提供啤酒&am…

济宁医学院计算机专业好就业吗,山东这3所医学院实力强,就业率高,中等生可捡漏...

原标题&#xff1a;山东这3所医学院实力强&#xff0c;就业率高&#xff0c;中等生可捡漏山东的医药类院校中&#xff0c;实力较强的是山东大学医学院、青岛大学医学院、山东第一医科大学、山东中医药大学&#xff0c;这4所医学院的录取分数都比较高。今天给大家介绍山东3所二批…

php读取西门子plc_PLC对模拟量信号,是怎么进行处理的?

模拟量信号是自动化过程控制系统中最基本的过程信号(压力、温度、流量等)输入形式。系统中的过程信号通过变送器&#xff0c;将这些检测信号转换为统一的电压、电流信号&#xff0c;并将这些信号实时的传送至控制器(PLC)。PLC通过计算转换&#xff0c;将这些模拟量信号转换为内…

gnutls_handshake() failed: Illegal parameter

gnutls_handshake() failed: Illegal parameter 报错信息如下&#xff1a; fatal: unable to access https://git.xxx.com/xxxx/xxxx.git/: gnutls_handshake() failed: Illegal parameter 背景及原因&#xff1a; 1、系统环境是Ubantu 2、最近变更git使proxy做负载 3、 openss…

计算机一级怎么描述,计算机一级「关于RGB正确的描述的是」相关单选题

1、【题目】关于RGB正确的描述的是选项&#xff1a;A.色光三元色B.印刷用色C.一种专色D.网页用色答案&#xff1a;A解析&#xff1a;暂无解析1、【题目】Photoshop 中利用背景橡皮擦工具擦除图像背景层时&#xff0c;被擦除的区域填充什么颜色?选项&#xff1a;A.黑色B.透明C.…

AFNetworking 3.1.0 使用中某些知识点讲解

# POST / GET 请求 /*! 首先要知道&#xff0c;POST请求不能被缓存&#xff0c;只有 GET 请求能被缓存。因为从数学的角度来讲&#xff0c;GET 的结果是 幂等 的&#xff0c;就好像字典里的 key 与 value 就是幂等的&#xff0c;而 POST 不 幂等 。缓存的思路就是将查询的参数…

Java 8 Streams:过滤和谓词否定

最近&#xff0c;有关LJC 邮件列表的成员在流中.filter方法中使用谓词否定的有趣讨论&#xff0c;因此我认为值得在博客文章中进行总结。 讨论的主题是使用.filter和否定谓词的方法。 这篇文章的代码可以在我的github帐户中找到 。 也许这就是您可能会想到的方式&#xff0c;…

sql server2008如何修改mac地址_如何查看本机的MAC地址和IP地址?

MAC地址是每台电脑或是手机设备中唯一进行识别的编码&#xff0c;IP地址则是路由器分配给电脑或是手机设备联网使用的一个编码。当我们电脑或无法上网&#xff0c;都需要查看IP地址是否正确。那如何查看MAC地址和IP地址呢&#xff1f;方法一&#xff1a;如何电脑已经成功联网了…

计算机工作原理 仿真,虚拟DCS仿真工作原理

虚拟dcs(ViRTUal DCS)是相对于在过程工业系统中运行的真实DCS(Real DCS)而言的&#xff0c;"虚拟DCS"就是将真实DCS在非DCS的计算机系统中以某种形式再现。"虚拟"是现今广泛使用的一种高新技术概念&#xff0c;比如有实现视景模拟的"虚拟现实"、…

poj1062 Bellman 最短路应用

昂贵的聘礼Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 41066 Accepted: 11959Description 年轻的探险家来到了一个印第安部落里。在那里他和酋长的女儿相爱了&#xff0c;于是便向酋长去求亲。酋长要他用10000个金币作为聘礼才答应把女儿嫁给他。探险家拿不出…

vlookup练习_大胆合并吧!VLOOKUP坐字法专做单元格合并查找

回复[目录]学习113篇Excel教程全套Excel视频教程&#xff0c;微信扫码观看编按&#xff1a;前面才讲了Excel家规&#xff0c;数据源表不能有合并单元格&#xff0c;今天就嘚瑟地呼吁“大胆合并”。为何&#xff1f;因为老菜鸟给大家带来了单元格合并查找利器VLOOKUP坐字法查找。…

第一代计算机主要应用领域为数据处理,第一代计算机主要应用领域为____。    A.数据处理 B.人工智能 C.科学计算 D.过程控制...

C、科学计算。一代主要用于科学计算&#xff0c;二代用与数据处理。计算机发明者约翰冯诺依曼。计算机是20世纪最先进的科学技术发明之一&#xff0c;对人类的生产活动和社会活动产生了极其重要的影响&#xff0c;并以强大的生命力飞速发展。它的应用领域从最初的军事科研应用扩…

jaxb 映射 空字段_JAXB和未映射的属性

jaxb 映射 空字段JAXB&#xff08;JSR-222&#xff09;是例外配置&#xff0c;这意味着存在默认映射应用于域对象。 这意味着有时您需要显式排除字段/属性。 在这篇文章中&#xff0c;我将讨论如何使用XmlTransient或XmlAccessorType&#xff08;XmlAccessType.NONE&#xff09…

vscode 书签_10个我必备的 VS code 拓展

推荐&#xff1a;Vue 3中令人激动的新功能&#xff1a;FragmentSuspense多v-modelVS Code是我最喜欢的文本编辑器。它是目前最可扩展的、最流行的代码编辑器。而且令人惊讶的是&#xff0c;它是由微软制作的(我知道)。在我看来&#xff0c;没有任何其他IDE或编辑器能比VS Code更…