当前位置: 首页 > news >正文

c++11的列表初始化及其底层原理

在c++98中,只允许数组和结构体的元素使用列表进行初始化

但是在c++11中,可以使用列表对所有的元素进行初始化

在使用{}进行初始化的时候,可以添加=,也可以不添加=

int a = { 10 }; int b{ 10 }; int* pa = new int[4] {0}; int arr[3]{ 1,2,3 }; pair<int, string >{1, "222"}; //易错 unordered_map<string, int>{{"11", 1}, { "222", 2 }};

这里map的内置类型是pair,pair可以使用{}初始化,map也可以使用{}初始化

并且自定义类型在构造的时候可以使用{}调用构造函数进行初始化

class A { public : A(int a,int b,int c) :_a (a), _b(b), _c(c) { } private: int _a; int _b; int _c; }; int main() { A a{1,2,3}; return 0; }

易错:对于自定义类型必须是在创建的时候调用{}进行初始化

列如

A b; b{ 1,2,3 };

则不能进行初始化,A b已经创建好对象,后面应该进行赋值而不能初始化

底层原理:
我们首先来看这一段代码:

auto il = { 10,20,30 }; cout << typeid(il).name() << endl; cout << sizeof(il) << endl;

il因该是什么类型那,很明显{ 10,20,30 }是一个常量数组,,因此我们推测il可能是一个数组,

但结果显示为

il是一个initializer_list<int>的类型,这里是c++11新增添的内容,并且il的大小为8(我这里采用的是x86),为什么是8那

首先我们来看一看initializer_list是什么

initializer_list可以看作一个容器,包含构造方法和迭代器,initializer_list的原理其实是这样的\

其内部有一个头指针和一个尾指针,头指针指向这个常量数组的开始,尾指针指向这个常量数组最后一个元素的后面,其内部只含有两个指针,因此大小为8

那类似与vector和map这种容器的{}初始化是怎么实现的那

在c++11中,map和vector等这类容器中都含有initializer的构造方法,因此可以直接调用

自定义类型则直接调用自己实现的构造函数

http://www.cnnetsun.cn/news/1360323.html

相关文章:

  • 企业私域运营全指南:从 0 到 10 万用户,可复制的全链路实操手册
  • 一个例子快速搞懂净现值(NPV)
  • 丑数1和2--动态规划法的一道不错的题
  • 水质五参数监测仪:精准洞察水体状况的“慧眼”
  • 帝国CMS编辑器如何解决Word文档中的公式粘贴后乱码问题?
  • 【马尔可夫链】状态转移的数学之美,小白也能看懂!!
  • 【超全】2026年3月OpenClaw(Clawdbot)华为云7分钟喂奶级搭建教程
  • OpenClaw部署 + 多agent智能体协作
  • 东华OJ-进阶题-19-排队打水问题(C++)
  • agent学习学习方法分享
  • FRP + Caddy 域名HTTPS配置指南
  • 字节前端面试真题解析系列(第三篇):手写进阶!字节高频手写难题,搞定直接冲二面
  • Maxwell电机多目标尺寸优化案例:使用Ansys Maxwell与OptiSlang的永磁...
  • 某雷赛86闭环步进驱动方案 HBS86H 86闭环电机驱动器/混合伺服驱动器。 原理图+PCB...
  • 基于java+ssm+vue的线上编程学习系统989
  • FX3U-IE-V12.2 PLC源代码解析及网口实现本地或远程穿透编程、监控
  • 工商业储能项目验收被拒?这些仪表选型“硬指标”提前对好
  • 西门子S7系列PLC C#上位机通信系统功能说明文档
  • 如何看待AI Agent(智能体)的伪效率问题
  • 常用的office word vba宏
  • Ubuntu 服务器之间互传文件夹
  • 人力资源战略与业务战略对齐的重要性及正确实施方法
  • 影视仓2026最新接口配置合集,tvbox4K高清源,值得收藏!
  • ArkClaw vs KimiClaw vs MaxClaw:个人用户实际体验对比
  • Setapp 3.44.1:macOS第三方应用商店功能介绍与使用体验
  • 基于定时器的按键计时操作
  • 科研党收藏!更贴合论文写作全流程的降AIGC网站,千笔·专业降AI率智能体 VS WPS AI
  • 动态住宅IP在跨境业务中的技术价值与实践指南
  • AF555 α-银环蛇D素,AF555-α-BTX荧光标记的光谱特性
  • Git误操作急救手册大纲,一招在手走遍天下