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

C++ initializer_list类型推导

目录

initializer_list

C++自动类型推断

auto

typeid

decltype


initializer_list<T>

C++支持统一初始化{ },出现了一个新的类型initializer_list<T>,一切类型都可以用列表初始化。提供了一种更加灵活、安全和明确的方式来初始化对象。

class Date
{
public:Date(int year,int month,int days):_year(year),_month(month),_days(days){}
private:int _year;int _month;int _days;
};
int main()
{//{}列表初始化(统一初始化)int a { 10};int b = { 10 };char c={'x'};int arr[3] = { 1,2,3 };string s{"hello world"};Date d1(2022,1,2);//C++98的初始化方式Date d2{ 2019,2,3 };//C++11的列表初始化Date d3 ={ 2023,7,1 };//{2023,7,1}隐式类型转换->临时对象->d3拷贝构造vector<int> v = { 1,2,3,4,5,6 };C++11的列表初始化,vector具有形参类型是initializer_list的构造函数list<int> li = { 1,2,3 };return 0;
}

initializer_list结构

创建一个initializer_list,并遍历:

initializer_list<int> il = { 1,2,3 };
initializer_list<int>::iterator it = il.begin();
while (it != il.end())
{cout << *it << endl;++it;
}

可以将initializer_list作为容器构造函数的形参类型来初始化容器,例如:

C++自动类型推断

auto

通过auto关键字可以使程序员在写一些长度较长的类型名时免去拼写,使用auto来代替,auto会自动推导出等号右边的类型。

vector<int> v;
auto it = v.begin();//auto自动推导迭代器类型
//本来需要这样写vector<int>::iterator it=v.begin();

typeid

cout << typeid(v).name() << endl;//打印出类型的字符串

decltype

使用推导出来的类型定义新的变量

http://www.lryc.cn/news/388465.html

相关文章:

  • 造一个交互式3D火山数据可视化
  • 【网络安全】一文带你了解什么是【CSRF攻击】
  • 短视频电商源码如何选择
  • 444444
  • 初识LangChain的快速入门指南
  • OpenBayes 教程上新 | CVPR 获奖项目,BioCLlP 快速识别生物种类,再也不会弄混小浣熊和小熊猫了!
  • 24 年程序员各岗位薪资待遇汇总(最新)
  • Android SurfaceFlinger——系统动画服务启动(十四)
  • VaRest插件常用节点以及Http请求数据
  • 【Linux】线程id与互斥(线程三)
  • JavaEE—什么是服务器?以及Tomcat安装到如何集成到IDEA中?
  • 主流分布式消息中间件RabbitMQ、RocketMQ
  • 【Unity Linux】模型导致的Unity项目崩溃
  • 22222
  • 大数据领域的常用开发语言详解
  • SpringBoot设置自动跳转前端界面
  • vue3前端解析大数据返给的数据格式
  • Incremental Player Build
  • 快钱支付股东全部股权已被质押!
  • 【鸿蒙学习笔记】数据类型
  • SAP实现特别总账的凭证预制
  • 鸿蒙 HarmonyOs 动画效果 快速入门
  • PyTorch学习之 torch.squeeze 函数
  • 达梦数据库系列—17. 主备集群搭建-实时主备
  • 【24医学顶刊】GANDALF:主动学习 + 图注意力变换器 + 变分自编码器,改善多标签图像分类
  • Linux 权限介绍
  • kernel header解析
  • MQ运行时遇到的问题
  • EDI是什么?与ERP有何关系
  • 【MotionCap】在wsl2 ubuntu20.04构建及运行