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

C++11——initializer_list


initializer_list的简介

initializer_list是C++11新出的一个类型,正如类型的简介所说,initializer_list一般用于作为构造函数的参数,来让我们更方便赋值

但是光看这些,我们还是不知道initializer_list到底是个什么类型,我们不妨直接看实例

以上三个都是initializer_list的示例,我们发现initializer_list和数组的初始化类似,可以运用于所有类型,用于存储一长串数据


initializer_list的结构

initializer_list是一个十分初级的container,以至于我们甚至可以认为其就是一种数据类型。initializer_list除了默认成员函数外只包含3个成员函数

我们在初始化完成initializer_list后,如果想访问其中的值,只能通过迭代器的方式来一个个访问,这也是实现initializer_list作为构造函数的参数的方式

int main()
{initializer_list<int> int_list = { 10,20,30 };auto it_init_list = int_list.begin();while (it_init_list < int_list.end()){cout << *it_init_list << ' ';it_init_list++;}cout << endl;
}

并且,这个迭代器是只可读无法修改的,我们在初始化完成initializer_list后便无法对其中的值进行修改


initializer_list的使用场景

我们在最开始介绍到,initializer_list一般用于作为构造函数的参数,那其是如何运作的呢?

在C++11中,无论是线性还是非线性的container都兼容了initializer_list的构造。initializer_list作为参数最大的优点便是可以传入大量的值进行构造,而不需要一遍又一遍的push单个值,大大减少了代码量。

我们以vector为例来看看initializer_list作为参数的构造场景

vector(initializer_list<T> il)
{reserve(il.size());for (auto e : il){push_back(e);}
}

 

相关文章:

  • Ubuntu Server 20.04.6下Anaconda3安装Pytorch
  • 【bug排查解决】现象级延迟8-10s
  • Swift 中 User Defaults 的读取和写入
  • docker搭建xxl-job
  • 配置typroa上传图片到gitee
  • Python作业答疑_6.22~6.25
  • debianubuntu的nvidia驱动升级
  • unity 2d 入门 飞翔小鸟 下坠功能且碰到地面要停止 刚体 胶囊碰撞器 (四)
  • APM Server监控
  • cs制作木马和钓鱼邮件
  • C实现的双向链表队列
  • 【Docker】Swarm的ingress网络
  • (分类)KNN算法- 参数调优
  • TimeGPT:时间序列预测模型实例
  • 「Swift」取消UITableView起始位置在状态栏下方开始
  • 2018一半小结一波
  • angular组件开发
  • create-react-app做的留言板
  • ECS应用管理最佳实践
  • export和import的用法总结
  • Laravel 中的一个后期静态绑定
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • python docx文档转html页面
  • python_bomb----数据类型总结
  • Sass Day-01
  • Sublime Text 2/3 绑定Eclipse快捷键
  • use Google search engine
  • Yeoman_Bower_Grunt
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 手机端车牌号码键盘的vue组件
  • 思否第一天
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (四)模仿学习-完成后台管理页面查询
  • (学习日记)2024.01.19
  • (一)appium-desktop定位元素原理
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • ******IT公司面试题汇总+优秀技术博客汇总
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net Stream篇(六)
  • .net 后台导出excel ,word
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET上SQLite的连接
  • ::before和::after 常见的用法
  • [.NET]桃源网络硬盘 v7.4
  • []常用AT命令解释()