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

c++列表初始化

测试代码 :

#define _CRT_SECURE_NO_WARNINGS
#include<vector>
#include<iostream>
using namespace std;struct my_struct 
{int a;char b;string c;
};class my_class 
{
public:my_class(int x){_a = _b = x;cout << "call  my_class(int x)" << endl;}my_class(int x,char y) {_a = x;_b = y;cout << "call  my_class(int x,char y)" << endl;}void push_back(int x,int y) {cout << "call  push_back(int x,int y)" << endl;}void insert(int x) {cout << "call insert(int x)" << endl;}int _a;char _b;
};int main() 
{/** 在C++98中,标准允许使用花括号{}对数组或者*结构体元素进行统一的列表初始值设定*/int arr1[3] = {1,2,3};string arr2[] = {"abc","def","ghi"}; //使用初始化列表后可以不用指定数组元素个数,初始化列表有几个元素,数组默认就有几个元素空间my_struct a_struct = {1,'a',"abcd"};for (auto& e : arr1) { cout << e << " ";}cout << endl;for (auto& e : arr2) { cout << e << " "; }cout << endl;cout << a_struct.a << " " << a_struct.b << " " << a_struct.c;cout << endl;cout << "-----------------------------------------------" << endl;
//---------------------------------------------------------------------------------------------------------------------------------------------    /*C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户自定义的类型 使用初始化列表时,可添加等号(=),也可不添加。*/int x1 = 1;int x2 = { 1 };int x3{ 1 };my_class a_class = { 2,'a' };//调用了构造函数my_class b_class{ 3,'b' };//调用了构造函数int arr3[2]{1,2};cout << x1 << " " << x2 << " " << x3;cout << endl;cout << a_class._a << " " << a_class._b <<" " << b_class._a << " " << b_class._b;cout << endl;for (auto& e : arr3) { cout << e << " "; };cout << endl;cout << "-----------------------------------------------" << endl;
//---------------------------------------------------------------------------------------------------------------------------------------------    /** */std::vector<my_class> my_vector1 = { 1,{1,2},3};//在这里用初始化列表初始化my_vector1,这依赖于vector内部实现以initial_list<T>为参数的构造函数,initial_list<T>可以内部成//员是两个指针,一个指向初始化列表(也就是{})的头,一个指向初始化列表的尾,由此,在使用初始化列表vector时可以任意个参数,//1和3调用的是my_class(int x)实现初始化,{1,2}调用的是my_class(int x,int y)实现初始化。my_vector1.push_back(1);//这里其实是单参数隐式类型转换,1通过my_class(int x)转换成了my_class类型的临时对象,然后在把临时对象作为参数床底给push_back函数。my_vector1.push_back({1,2});//这里其实是多参数隐式类型转换,{1,2}通过my_class(int x,int y)转换成了my_class类型的临时对象,然后在把临时对象作为参数床底给push_back函数。--调用两个参数的构造函数就用{}for (auto& e : my_vector1) { cout << e._a << ":"<<e._b<<" "; };cout << endl;//实际上,可以把数组看做一个内部实现了initial_list<T>为参数的构造函数的类。因此可以用类似这样的方式初始化:int arr[] = {1,2,3}// 可以把内置类型看做有构造函数的类因此,内置类型也可以用类似这样的方式初始化:int x(5);int y{1},int(3)--匿名int对象。
}

运行结果如下:

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

相关文章:

  • MyUI轮播Carousel组件文档
  • Windows10笔记本电脑开启BIOS
  • deep learning(李宏毅)--(六)--loss
  • “显著性”(Saliency)是计算机视觉中的一个重要概念,主要指的是图像或视频中最吸引人注意力的区域或对象
  • 川翔云电脑:云端算力新标杆,创作自由无边界
  • 产品经理如何绘制流程图
  • 4.PCL点云的数据结构
  • 上证50etf期权交易限制的是什么?
  • 【JAVA新特性】Java 8 新特性实战
  • 小程序性能优化全攻略:提升用户体验的关键策略
  • Java List 集合详解:从基础到实战,掌握 Java 列表操作全貌
  • Kubernetes 学习笔记
  • 【JEECG 组件扩展】JSwitch开关组件扩展单个多选框样式
  • 基于pytorch深度学习笔记:1.LeNetAlexNet
  • XXE漏洞4-XXE无回显文件读取-PentesterLab靶场搭建
  • Kotlin密封类
  • 6. 工程化实践类:《Webpack 5 性能优化全指南:从构建速度到输出质量》
  • 如何成为高级前端开发者:系统化成长路径。
  • 自动化测试工具 Selenium 入门指南
  • CTF Crypto基础知识
  • python(one day)——春水碧于天,画船听雨眠。
  • Matplotlib 轴标题与刻度字号调整方法
  • SGMD辛几何模态分解 直接替换Excel运行包含频谱图相关系数图 Matlab语言!
  • 多重共线性Multicollinearity
  • pytorch小记(三十一):深入解析 PyTorch 权重初始化:`xavier_normal_` 与 `constant_`
  • cuda编程笔记(8)--线程束warp
  • imx6ull-系统移植篇9——bootz启动 Linux 内核
  • Java全栈工程师面试实录:从电商支付到AI大模型架构的深度技术挑战
  • 软件项目管理学习笔记
  • S7-1200 模拟量模块全解析:从接线到量程计算