C++11特性--统一的列表初始化

个人主页:Lei宝啊 

愿所有美好如期而遇


{} 初始化及std:initializer_list

这种初始化方式我们建议用第一种,但是以后看见下面两种也不要感到疑惑,是可以这样初始化的。

int main()
{int a = 1;int b = { 1 };int c{ 1 };return 0;
}

二 

class Date
{
public:Date(){}Date(int year, int month, int day):_year(year),_month(month),_day(day){}private:size_t _year;size_t _month;size_t _day;};int main()
{Date a;Date b(1, 1, 1);Date c{ 1,1,1 };//多参数的隐式类型转换,{1,1,1}构造一个Date类型的临时对象,去拷贝构造d对象。Date d = { 1,1,1 };return 0;
}

三 

#include <vector>
using namespace std;int main()
{//与Date是不同的,这里不是多参数隐式类型转换,//是C++11特性,添加了initializer_list构造函数/*底层是这样的vector(initializer_list<value_type> il){for(auto &e : il){*finish = e;finish++;}}	*/vector<int> v = { 1,2,3,4,5,6 };vector<int> v{ 1,2,3,4,5,6 };return 0;
}

initializer_list构造是这样的:

{1,2,3}会被识别构造成initializer_list,并且是唯一构造,只有这么一种构造方式。

四 

#include <map>
using namespace std;int main()
{map<string, int> m1;pair<string, int> p;pair<string, int> p1;//initializer_list<pair<const string,int>>map<string, int> m2{ p, p1 };//initializer_list<pair<const char*,int>>//{"1",1}构造pair --> pair<const cha*, int>/*template<T1, T2>struct pair{pair(const T& key, const T& value):fisrt(key),second(value){}template<U, V>pair(pair<const U, V>& kv):first(kv.first),second(kv.second){}//使用const char*构造stringT1 first;T2 second;}*///这样再构造initializer_list,再用这个对象拷贝构造map<string, int> m3{ {"1",1},{"2",2} };return 0;
}

value_type在这里是pair<const Key, T>类型

解释map<string,int> m2 {p1, p2}:

p1和p2都是pair<string, int>类型,所以initializer_list中的value_type就是pair<string,int>类型,那么构造m2的就是iniializer_list<pair<string,int>>。

解释map<string, int> m3{ {"1",1},{"2",2} };

initializer_list中的value_type就是{"1",1}的类型,使用它去构造一个pair,那么pair的类型就是pair<const char*, int>,那么value_type就是这个类型,也就是说,我们使用initializer_list<pair<const char*,int>>去构造m3,而m3中pair的类型是pair<string,int>,无法直接构造,所以使用了类模板,将const char*构造成string。

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

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

相关文章

数据链路层(三):流量控制和链路管理

目录 1 流量控制和链路管理1.1 流量控制介绍1、什么是流量控制2、流量控制的功能和方法 1.2 停止等待1.3 滑动窗口1、滑动窗口2、发送方滑动窗口3、接收方滑动窗口4、滑动窗口的流量控制使用滑动窗口如何实现流量控制的为什么滑动窗口的大小比模数小1滑动窗口控制流量采取的措施…

【SpringBoot3+Mybatis】框架快速搭建

文章目录 GitHub 项目一、依赖二、 配置文件三、启动类四、SpringBoot3兼容Druid报错五、工具类5.1 结果封装类5.2 解决枚举类5.3 MD5加密工具类 GitHub 项目 springboot-part——springboot-integrate-07 Mybatis-plus版完整CRUD项目文档记录&#xff1a; 【SpringBoot3Myba…

“神器”巩膜镜,为屈光不正及难治角膜病患者带来希望!

“我不想再戴回框架眼镜了&#xff0c;但是由于角膜疾病问题&#xff0c;我曾戴普通隐形眼镜和RGP都会出现极强的异物感&#xff0c;非常不舒服&#xff01;现在我该怎么办呢&#xff1f;”四川眼科医院门诊&#xff0c;张女士疑惑地问到。 28岁的张女士是一名圆锥角膜患者&am…

Pixelmator Pro:专业级图像编辑,触手可及mac版

Pixelmator Pro是一款功能强大的图像编辑软件&#xff0c;专为Mac操作系统设计。它拥有直观的界面和丰富的工具&#xff0c;能够满足用户各种图像处理需求。 Pixelmator Pro软件获取 首先&#xff0c;Pixelmator Pro支持多种文件格式&#xff0c;包括JPEG、PNG、GIF、BMP、TIF…

【包远程安装运行】SpringBoot+Mysql实现的美食分享菜谱制作平台+演示视频+开发文档(论文模板)

今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的美食分享菜谱制作平台系统&#xff0c;该系统分为前台和后台&#xff0c;多用户分享平台。主要实现了 除脚手架功能以外下面是系统的功能&#xff1a; 前台普通用户&#xff1a;注册、登录、首页、美食…

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(三)—— 随机梯度下降

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 这篇文章中&#xff0c;咱们将使用Keras和TensorFlow…

GPT神器级插件Code Interpreter

自去年 3 月份以来&#xff0c;人们对 GPT-4 API 的兴趣激增&#xff0c;“有数百万开发人员请求访问”。OpenAI 在一篇博客文章中&#xff0c;分享了使用 GPT-4 正在进行的一系列令人兴奋的创新&#xff0c;并阐明了未来的愿景&#xff1a;未来基于聊天的大模型可以用在任意的…

每秒批量插入10000条数据到MySQL中,资源消耗(带宽、IOPS)有多少?

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容起因代码资源情况改造 &#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、…

LeetCode每日一题[c++]-322.零钱兑换

题目描述 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无…

照片变动图怎么操作?一招在线转换

GIF动画是一种特殊的图像文件格式&#xff0c;它可以在一张图像中显示多个图像帧&#xff0c;并以循环播放的方式展示&#xff0c;从而实现动态效果。由于GIF格式的广泛支持和较小的文件大小&#xff0c;它成为了互联网上常见的动画格式之一。想要制作gif动画图片可以使用Gif制…

链动2+1模式 完全合法合规 不存在传销问题!!

在商业经营中&#xff0c;营销策略的巧妙运用对于提升产品销量和扩大品牌影响力至关重要。然而&#xff0c;企业在制定和执行营销策略时&#xff0c;必须严格遵循法律法规&#xff0c;以免陷入法律风险。本文将着重探讨链动21模式的法律要素&#xff0c;以论证其合规性。 一、链…

穿越地心:3D可视化技术带你领略地球内部奇观

在广袤无垠的宇宙中&#xff0c;地球是一颗充满生机与奥秘的蓝色星球。我们每天都生活在这颗星球上&#xff0c;感受着它的温暖与恩赐&#xff0c;却往往忽略了它深邃的内部世界。 想象一下&#xff0c;你能够穿越时空&#xff0c;深入地球的核心&#xff0c;亲眼目睹那些亿万年…

nodeJs中实现连表查询

nodeJs中实现连表查询 router.post(/getOrder, async function(req, res, next) {let userId req.body.phone;let sql select * from orders where userId?;let orders await new Promise((resolve, reject) > {connection.query(sql, [userId], function(error, resul…

MapReduce配置和Yarn的集群部署

一、集群环境&#xff0c;还是如下三台服务器 192.168.32.101 node1192.168.32.102 node2192.168.32.103 node3 二、YARN架构 YARN&#xff0c;主从架构&#xff0c;有2个角色 主&#xff08;Master&#xff09;角色&#xff1a;ResourceManager从&#xff08;Slave&#x…

【Redis教程0x04】详解Redis的4个高级数据类型

引言 在【Redis教程0x03】中&#xff0c;我们介绍了Redis中常用的5种基础数据类型&#xff0c;我们再来回顾一下它们的使用场景&#xff1a; String&#xff1a;存储对象、url、计数、分布式锁&#xff1b;List&#xff1a;消息队列&#xff1b;Hash&#xff1a;存储对象、购…

ChatGPT论文指南|ChatGPT论文写作过程中6个润色与查重口诀!【建议收藏】

点击下方▼▼▼▼链接直达AIPaperPass &#xff01; AIPaperPass - AI论文写作指导平台 公众号原文▼▼▼▼&#xff1a; ChatGPT论文指南|ChatGPT论文写作过程中6个润色与查重口诀&#xff01;【建议收藏】 目录 1.润色与查重口诀 2.AIPaperPass智能论文写作平台 论文完成…

商机在线互动营销— —Pushmall智能AI数字名片

商机在线互动营销— —Pushmall智能AI数字名片 开发计划 2024年2月开发计划&#xff1a; 1、优化名片注册、信息完善业务流程&#xff1b; 2、重构供应信息、需求信息发布。 3、会员名片地理位置服务优化‘ 4、企业名片&#xff1a;员工管理优化 5、CRM客户资源管理设计。 已…

基础小白十天学会linux------linux的指令

1.图形界面使用shell命令 2.字符界面使用shell命令 3.shell命令一般格式&#xff1a;命令名选项参数&#xff0c;命令名一般是英文全称的缩写&#xff0c;选项前导符以-、--开头&#xff0c;还可以没有前导符 字符界面截屏要求&#xff1a; 1) 启动计算机&#xff0c;以超级用…

新手摄影笔记-基础知识-按键和参数说明【1】

1. 相机正反面 2.顶部 3.屏幕 4.光圈、快门、感光度 什么是景深呢&#xff1f;景深就是照片中清晰和模糊的范围&#xff0c;也就是前后的距离。景深越深&#xff0c;意味着照片中清晰的范围越大&#xff0c;前后的距离越长&#xff0c;背景越清晰。景深越浅&#xff0c;意味着照…

加密算法概述:分类与常见算法

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在信息安全领域&#xff0c;加密技术是保护数据不被未授权访问的关键手段。Java作为一种广泛使用的编程语言&#xff0c;提供了丰…