应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

ModernC新特性

  ModernC新特性initializerlist
  我们先从一个例子开始进入今天的话题,如下图所示:
  上图所示的例子中,我们希望初始化一个vector,除了v9的初始化之外,我们发现,如果我们希望一次性初始化一个vector拥有多个不同数值的元素,并不方便。要么采用上图中初始化v1的方法,要么采用上图中初始化v4的方法,但是这个必须的有一个已经满足我们需要的vector如上图中的v1。还有就是采用初始化v7的方法,逐个pushback操作。这些操作对于程序员来说,都不够直接也不够方便。上图中v9的初始化方法就是c11之后的新特性,初始化数值被逗号分开,用大括号括起来直接跟在变量后面加分号结尾就完成了初始化。再看看上图所示的v9初始化例子,对比一下,是不是方便了很多。实际上不过vector可以这样初始化,普通数据类型也可以这样初始化,如下图所示的例子:
  在上图所示的例子中,我们看到基本数据类型也可以使用这种新的初始化方式,其中unsignedlong类型的ul初始化时只有一对{},其中并未写任何值,这表示将ul初始化为该类型的默认值,对于unsignedlong类型来说,默认值是0,因此ul的初值被初始化为0。同时上图中也展示了如何使用新式初始化方式初始化STL库的map数据类型。我们看到这样的初始化方式确实方便了不少,这正是c11之后所追求的统一初始化(UniformInitialization)。而实现统一初始化背后的技术支撑就是采用了initializerlist。下面我们就来解释一下,c编译器是如何使用initializerlist来完成统一初始化的。
  std::initializerlist是C11引入的,定义在头文件中。initializerlist是一个模板类,它的背后是由std::array来实现的。编译器在编译代码时看到变量后面的{},就会根据{}之间元素的个数对其首先构造一个array,T在具体环境中就是变量的类型或者是容器存储的类型。然后用构造好的array和array中元素的个数来构造一个initializerlist对象。使用该对象来初始化变量。你可能会有疑问,编译器如何用构造的initializerlist对象来初始化变量呢?我们通过下图所示的例子说明。
  运行上图所示的例子,可以得到如下输出:
  可见编译器在初始化classA的对象a时调用了其构造函数,上文不是说编译器已经构造了一个initializerlist对象准备来初始化对应的变量吗?上图的例子中没有构造函数接收一个initializerlist对象啊?是的,编译器构造完成initializerlist对象后就会去对应的类定义中查找是否有接收参数为initializerlist对象的构造函数,如果有就调用该函数,如果没有,就会将构造好的initializerlist对象中的数据拆开,由于编译器知道数据的类型和个数,因此就会查找有没有接收对应类型参数和个数匹配的构造函数,如果有就将拆开的数据传给找到的构造函数,完成构造。如上图中所示的例子,最终是调用了classA的一个参数的构造函数。为了验证上面的说法,我们给classA添加一个带有initializerlist类型参数的构造函数,再运行试试看。如下图所示:
  我们运行上图所示的代码,得到如下输出。
  可以看到带有initializerlist类型参数的构造函数被调用了。实际上,一个函数如果以initializerlist类型作为参数的话,那么这个函数就可以接收变长参数了,因为initializerlist类型是可以处理变长参数的。想想如果我们初始化vector的时候,我们想初始化几个元素是可以自由写的,因此initializerlist类型必须支持长度可变。实际上其原理我们在之前已经提到了。但是initializerlist支持的数据类型必须一样。从这一点上来说可变参数模板(不了解可变参数模板的可以看我之前的文章C2。0新特性之变参模板)更强悍一些。下面演示一个使用initializerlist类型作为函数参数来支持可变参数长度的例子,如下图所示:
  运行上图所示的代码得到下面输出:
  正式因为initializerlist支持变长数据处理,我们可以根据方便的使用标准库里提供的函数了,如下图所示的求多个数据的最大值和最小值。
  这比之前只能两个数进行比较方便多了吧。
  本文介绍了Modernc统一初始化以及initializerlist的用法和其背后的基本原理,希望对大家有所帮助。

埃隆马斯克喊话普京下场单挑,俄航空局局长戏称其小鬼SpaceX和特斯拉总裁埃隆马斯克在自己的社交平台上常常语不惊人死不休。据3月14日《镜报》报道,3月14日这位亿万富翁在自己的推特平台上喊话俄罗斯总统普京,要以乌克兰为赌注,……红米K50系列信息汇总来了,发布会不用看了,亮点都在这里今天是红米K50预热的最后一天,明天就是发布会了,按照惯例明天应该就是所有消息的总结,然后再提高一下大家的期待,红米k50系列主要关注点仍旧集中在芯片处理器、屏幕、影像和续航这……建议160以下的中年女人,尽量多穿这2裙3裤,会显高又提气质说到160cm以下的女性在穿衣方面对自己最担心的一点是什么?那一定就是害怕显矮,很多女性都会因为身材的问题而对自己的搭配不够自信。尤其是中年女人,她们也会往往伴随身材发福的问题……刘晓庆与阿峰离婚17年她再婚嫁富豪,他在愧疚中尽父亲的责任点击关注,每天都有名人故事感动您!刘晓庆与阿峰刘晓庆是一个不老的传奇,已红了40多年,从来没有哪个女演员的艺术生命有她这样长久。而今已经70岁的刘晓庆,一举一动依然……Tomcat安装与配置1。在根目录建tomcat〔rootlocalhost〕mkdirtomcat2。拷贝apachetomcat7。0。6。zip文件到tomcat下。〔roo……国乒金花继收获百万豪宅后再得巨奖,其明星哥哥却遭遇婚姻危机国乒女队三朵金花在东京奥运会上光芒四射,她们用自己的实力诠释了什么才是世界顶级高手。并同时包揽了女单金银两枚奖牌和女团金牌。在东京奥运会上体现了现代女性的精神面貌:巾帼英雄不让……练练正午和于正剧中的常用女配,和马苏是同学,延禧中也有她电视剧《尚食》和《相逢时节》相隔一天播出,而这两部剧中都有一个演员练练,她演的两个角色也都有点不太讨喜。在《尚食》中她饰演的王司膳,一开始处处针对女主、苏月华、殷紫萍三人……他用8年收藏20多万份报纸,还办了藏报馆报纸被称为散装的百科全书,当时是新闻纸,过后是见证史。在内蒙古包头市黄河谣景区,有个叫孙凯的中年人,用七八年的时间收藏了20多万份报纸,并在黄河边办起了老报纸展览馆,让更多人和……世锦赛刘诗颖掷出63米25,遭绝杀无缘奖牌,澳洲名将成功卫冕北京时间7月23日,2022年俄勒冈田径世锦赛在美国尤金进入第8天,刘诗颖遗憾无缘奖牌。在前五轮排名第二的情况下,刘诗颖最后一轮被两位对手超越,她以63米25屈居第四无缘奖牌。……2022环球旅游文化小姐齐雯臻因为旅行所以遇见相约环球,遇见唯一的你!2022环球旅游文化小姐:齐雯臻环球记者站醉美家乡环球小记者:你的家乡在哪里?齐雯臻:山东环球小记者……都是演五亿探长,刘德华梁家辉曾江放一起,差距就出来了清末时期香港就黑帮横行,战后更是与军统控制的本土帮派,以及上海转战过来的青帮一起混迹在这窄小的天地中,造成了香港黑帮泛滥的局面。到了19世纪末期,整合过的香港黑帮三合会,……大魔王张怡宁晒近照!41岁依旧年轻气质十足,61岁富豪老公显近日张怡宁作为优秀的乒乓球运动员,在自己的社交媒体上晒出了最新的照片,已经41岁的她,样貌并没有发生太多的改变,看得出来,她在过去这十几年的时间里,保持着非常轻松的心态,显得十……
数码晚报iPhone14Pro手机A16性能预测GPU快25iPhone14Pro手机A16性能预测:GPU快2530,内存带宽提高50近日,Macworld带来了iPhone14Pro的性能预测,所有项目均是与iPhone13P……中国电商之父连马云都自叹不如,为妻子错失万亿江山文:小余随着互联网经济的崛起,电商行业发展也日趋成熟。据国家统计局数据显示,2021年我国网上零售额已达130883亿元。当前,网络购物已经成为了我国主要的零售渠道之一。……iOS15。6正式版体验出炉果粉可以不用等,建议直接更新苹果手机这几年一直都在挤牙膏,作为果粉想体验到适合自己的产品已经变成了一件比较困难的事情,这也导致很多用户选择新机的时候变得非常纠结。在这种情况下,很多用户只能选择退而求……S28赛季的中路224节奏是什么意思?今天,打算以一场实战对局,来给大家聊聊新版本中路的前期打法。其实,中路的前期节奏并不复杂,主要有三个关键点。2级抓边由于中路兵线很短,所以,中路在抢完线升到2……逾期故意不提醒,一星期后134手机催收,为点利息费吃相如此难今天,我想跟大家分享发生在我自己身上的事,想起来就让人气愤,也为这样的平台卑劣行径感到可耻、可悲,吃相也太难看了!我今天要揭露的平台就是京东白条。我平时购物京东、淘宝、拼……保剑锋曾经的偶像剧鼻祖,因一句话败光路人缘,他都干了啥?在最近的热播剧《星汉灿烂》中,大家一边被作精程老太太气得脑瓜疼,一边跟着文帝狂磕CP。有一场吴磊挨打的戏,文帝站在高台上,看着赵露思一脸焦急的表情,不紧不慢地说了句:就是……双11降价幅度超千元的机型汇总,以下3款重点关注,最高下调1您在阅读前请点击上面的关注二字,后续会第一时间为您提供更多有价值的相关内容,感谢您的支持。我们都知道双11期间手机会有大幅度的价格下调,但是今年的双11价格下调幅度非常大……行家去胶东不碰鲍鱼和大虾,反把4种廉价海鲜夸,当地人真识货秋日生活打卡季山东是中国的农业大省和海产品大省,山东的胶东地区因为濒临黄渤海,所以这里海产品资源非常丰富,不仅有海洋捕捞的各种海产品,海产品的养殖也名列全国的前茅。胶东地……大暑将至,要学会忌嘴,冬瓜和红糖绝配,每天喝一杯,舒服过三伏进入三伏天后,7月23号即将迎来大暑节气了,大暑节气是夏季最后一个节气,暑是炎热的意思,大暑,指炎热之极,再加上大暑处在三伏天,是一年中阳光最猛烈、最炎热的节气,湿热交蒸在此时……原神3。0夜兰早柚等卡地形取消,纵享丝滑?这是真的大家好这里是早知道。带来一些大家梦寐以求的画面。3。0,大世界赶路角色竟然取消了卡地形!!!坐实了目前角色会被地形卡住这件事,是bug这哪里敢想?……CBA山东三外援基本达成,合计107岁,能否率队闯入8强CBA休赛期最近暗流涌动,几大豪强正抓紧运作以及积极备战,三外援组合成为当下潮流,辽宁在保留莫兰特与弗格组合后据说还要找第三外援,广厦更是保留了奥卡福以及拉杜利察的双塔组合,上……流量向左演员向右,被资本裹挟的迪丽热巴该何去何从?提起迪丽热巴,你的第一印象是什么?美。很美。超级美。曾经有主持人问杨幂,为什么要签迪丽热巴?杨幂的理由是长得太好看了。这话很粗暴,也很诚实。……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网