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

【C++11特性篇】C++11中新增的initializer_list——初始化的小利器(2)

前言

大家好吖,欢迎来到 YY 滴C++11系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

目录

  • 一.探究std::initializer_list是什么?
  • 二.std::initializer_list使用场景(初始化容器对象,作为operator=的参数......)
  • 三.对比【C++11特性{ }的隐式类型转换】&【调用initializer_list的vector构造函数】不同原理
  • 四.std::initializer_list的文档传送门

一.探究std::initializer_list是什么?

我们观察下面代码:

  • 根据输出结果“the type of il is an initializer_list”,我们可以知道 initializer_list是作为参数的构造函数
int main()
{auto il = { 10, 20, 30 };cout << typeid(il).name() << endl; 输出结果:the type of il is an initializer_listreturn 0;
}

二.std::initializer_list使用场景(初始化容器对象,作为operator=的参数…)

  • std::initializer_list一般是作为构造函数的参数
  1. C++11对STL中的不少容器 (vector,list,map…) 增加std::initializer_list作为参数的构造函数 ,这样初始化容器对象就更方便了
    在这里插入图片描述
  2. std::initializer_list也可以作为operator=的参数 ,这样就可以用大括号赋值
    在这里插入图片描述

三.对比【C++11特性{ }的隐式类型转换】&【调用initializer_list的vector构造函数】不同原理

  • C++11中新增的关于{}用法 (传送门):具体对象是下面代码中Point, 直接调用两个参数的构造 – 隐式类型转换
  • 我们vector容器构造函数的参数是std::initializer_list, 这里是调用initializer_list的vector构造函数
    在这里插入图片描述
struct Point
{//explicit Point(int x, int y)//调用后,可不让其隐式类型转换Point(int x, int y):_x(x),_y(y){cout << "Point(int x, int y)" << endl;}int _x;int _y;
};
int main()
{	// 不同的规则vector<int> v1 = { 1,2,3,4,3}; // 调用initializer_list的vector构造函数Point p1 = { 1,1};  // 直接调用两个参数的构造 -- 隐式类型转换return 0;
}

四.std::initializer_list的文档传送门

  • initializer_list 文档传送门

相关文章:

  • AcWing 1250. 格子游戏(并查集)
  • HarmonyOS鸿蒙应用开发——数据持久化Preferences
  • mongodb之mongoTemplate基本操作
  • Java 基础学习(十二)文本I/O、日期与时间API
  • 搭建消息时光机:深入探究RabbitMQ_recent_history_exchange在Spring Boot中的应用【RabbitMQ实战 二】
  • Qt/C++视频监控安卓版/多通道显示视频画面/录像存储/视频播放安卓版/ffmpeg安卓
  • ToolLLM model 以及LangChain AutoGPT Xagent在调用外部工具Tools的表现对比浅析
  • 深度学习记录--矩阵维数
  • 塑料检查井配套开发了注塑成型的井盖、井筒、井座
  • 详细教程 - 从零开发 Vue 鸿蒙harmonyOS应用 第一节
  • 基础算法(1):排序(1):选择排序
  • 云原生之深入解析如何在Kubernetes中快速启用Cgroup V2支持
  • 【教学类-06-16】20231213 (按比例抽题+乱序or先加再减后乘)X-Y之间“加法减法乘法+-×混合题”
  • Yaml语法解析
  • CTF网络安全大赛是干什么的?发展史、赛制、赛程介绍,参赛需要学什么?
  • 2018一半小结一波
  • Angular 2 DI - IoC DI - 1
  • CEF与代理
  • co模块的前端实现
  • create-react-app做的留言板
  • git 常用命令
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java编程基础24——递归练习
  • js操作时间(持续更新)
  • nodejs:开发并发布一个nodejs包
  • node和express搭建代理服务器(源码)
  • Octave 入门
  • Python十分钟制作属于你自己的个性logo
  • Sass 快速入门教程
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 经典排序算法及其 Java 实现
  • 那些被忽略的 JavaScript 数组方法细节
  • 排序(1):冒泡排序
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 以太坊客户端Geth命令参数详解
  • puppet连载22:define用法
  • #预处理和函数的对比以及条件编译
  • (145)光线追踪距离场柔和阴影
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (十六)串口UART
  • (一)SpringBoot3---尚硅谷总结
  • (转) ns2/nam与nam实现相关的文件
  • (转)创业家杂志:UCWEB天使第一步
  • (转载)利用webkit抓取动态网页和链接
  • ******IT公司面试题汇总+优秀技术博客汇总
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • //解决validator验证插件多个name相同只验证第一的问题
  • @Service注解让spring找到你的Service bean
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [④ADRV902x]: Digital Filter Configuration(发射端)