范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

ModernC新特性

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

快讯!诺基亚与戴姆勒达成全球和解协议!整车专利收费或又进一步作者黄莺2021年6月1日,诺基亚和戴姆勒分别宣布,两家公司的全球专利诉讼达成和解协议,双方签署专利许可协议,诺基亚向戴姆勒授权移动通信技术。双方协议的条款保密。这是在4月23日,耐克业绩好到爆!AirJordan1时隔36年重获新商标作者黄莺耐克是一个属于中国,为中国服务的品牌。耐克CEO约翰多纳霍周四在与华尔街分析师就耐克最新收益交谈时表示。当天公布的耐克财报显示,耐克营收达到123。4亿美元,实现15。09华为云携成都合作伙伴发布互联网创新联合解决方案10月26日,智变质变成都进而有为互联网创新峰会暨华为云城市峰会2021在成都棕榈泉费尔蒙酒店成功召开。峰会现场华为云携手成都百新智联科技有限公司(以下简称百新智联)潜在人工智能科华为商城首发新品nova9旅行必备大飒四方国庆长假将至,相信很多消费者已经在计划出游,无论是独自出行还是全家出动,一定少不了记录沿途的风景和美食。在Vlog盛行的当下,大家都更愿意用视频来记录生活,这时拥有一款超好用的主打开门鸿!华为商城双11优惠终极攻略出炉随着双十一临近,各电商平台的优惠力度也在逐渐加大。11月1日起,全网多家电商平台优惠力度再次升级,一年一度的剁手时机不可错过。而作为HarmonyOS爱好者,小编一直关注的华为商城以全新形态占据客厅王者地位,华为智慧屏持续升级在这一年一度的双十一,懂装修的人都知道要趁着优惠抓紧抢购家装好物,因为这也是品质家电降价促销的大好时节。作为新生代家居消费市场的主力,85后90后们的家装消费需求开始偏向多元化趣味用云守护。用AI驱动,华为云专属月移动出行专项行动开始啦华为云加油站???是以美好出行为名的加油站线下快闪活动!10月21日11月3日,华为云专属月美好出行加油站先后落地北京广州深圳,带着华为云移动出行领域技术和解决方案,用云守护,用A实拍样张出炉!荣耀Magic3系列融合影像加码胜出iPhone13系列?今年的89月可谓是高手过招,荣耀苹果等厂商纷纷推出了自己的高端旗舰机型,在核心配置强大的情况下,大家也都保持一致的默契,在影像赛道全力奔跑,譬如苹果升级镜头硬件,荣耀发布最新影像技20W播放量,B站爆火UP主来讲PS啦!由于疫情原因,图书馆90分钟讲座推迟了,但我们没有缺席!为了使大家能够参与培训,我们精心挑选了多场读者呼声很高的培训主题,培训形式由现场培训转为线上直播培训,目前已成功举办两期。接荣耀Magic3Pro和iPhone12Pro影像实力PK,你猜谁会赢?在荣耀Magic3系列发布会后,荣耀CEO赵明透露了荣耀下一阶段的目标要从苹果手中抢回高端份额。冲击高端,抗衡苹果,荣耀Magic3系列的底气在于拥有全能科技实力,而且在许多方面的充满未来感的智慧生活照进现实,华为智慧屏实力超群导语华为智慧屏双十一开门红,首日即斩获多个平台电视品类单品排名TOP1!双十一的优惠活动仍在持续进行中,更多惊喜等你来发现。要想了解更多活动及产品优惠详情,大家可以登录各大电商平台
雷军演讲及小米MIX4到来的时间确定!蓝绿大厂也有动作在昨天晚上的首轮小米直面会上,作为主讲人的雷军透露了8月份的活动,这次雷军不仅将再度进行演讲,而且还透露了8月会有小米新机小米平板5系列的信息。今天早上,2021雷军年度演讲正式确MIUI13发布时间官方消息来了,年底发布小米MIUI系统被一些网友称为优化最好的安卓系统UI,也正是小米MIUI系统为小米手机吸引了大批的粉丝,有用户表示自己喜欢小米手机是因为MIUI系统,不过在MIUI12系统推出后被一文掌握苹果Q3财报获利翻倍高端iPhone热卖供应问题苹果(27日)盘后公布2021会计年度第3季财报,获利与营收均缔造史上最佳Q3成绩,但苹果预告供应链瓶颈影响蔓延到iPhone,本季(年度第4季)营收成长可能低于第3季。F2021可以闭着眼睛买的4部旗舰手机,各价位都有,放心用,两年不过时骁龙888发热严重,严重影响了旗舰手机的销量,反而是搭载骁龙870的中端手机卖得更好,但对有些用户来说,还是更愿意购买旗舰手机,因为旗舰手机是手机厂家的实力展现,不管是设计,还是性安全高效,从容办公紫光计算机Unis526TG2评测相信很多人都对紫光计算机进入商用PC市场有所耳闻,也希望对具体产品有更多了解。事实上紫光计算机在去年就已经推出了第一代产品。近日,紫光计算机在商用PC市场继续发力,带来其第二代商用阿里巴巴请你不要变成四十大盗本来不想谈阿里巴巴这次的猥亵事件,但今天读了一下阿里巴巴与四十大盗的故事后觉得还是说点什么。首先用图让大家了解一下整个事件的来龙去脉马云当初为什么给公司取名阿里巴巴呢?因为阿里致力小米新品发布小米MIX4手机价格公布小米MIX44999元起陶瓷机身,全面屏,快充,亮点不少,价格厚道!友商不好混啊小米平板51999起如果不缺钱的,建议小米平板5pro,这次真的解决了app小米第二代OLED电视来了,你后悔了吗?8月10日晚,业界期待多时的2021雷军年度演讲正式上演。除了一系列亮眼的成绩单,刚刚创下百米亚洲最佳成绩苏炳添作为代言人的加入,以及MIX4手机小米平板5,小米的OLED电视新品vivoS10Pro深度评测自拍手机如何实现性能越级?提起自拍手机,相信不少人脑海中率先浮现的都是美颜效果好自拍玩法多手机颜值高等字词,对于手机性能方面选择性忽视,毕竟根据以往经验,自拍手机主要发力点集中在自拍和设计,对于性能的重视度为什么现在很少人推荐神舟电脑了?原因分为3点,便宜不是借口发现了吗?当人们提起游戏本的时候,目光只会聚焦在拯救者暗影精灵暗影骑士等一线大品牌上。哪怕是为了省钱,退而求其次,小米游戏本荣耀猎人也是可以考虑的选择。而曾被誉为性价比屠夫的神舟电家里的投影仪坏了不知道怎么修?记住这几点你不用再花冤枉钱投影仪非常适合日常生活使用,特别是在工作结束或休假之余,进行看电影看电视看综艺等放松。测评显示瑞格尔投影仪在夜间的灯光效果和电影院一样,非常适合家庭使用。当然价格只是一个购物的参考