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

C++11

C++11一切皆可列表初始化

变量列表初始化

自定义类型列表初始化


struct Point
{
	int _x;
	int _y;
};
int main()
{

	Point p{ 1, 2 };

	return 0;
}

 数组列表初始化

日期类列表初始化


class Date
{
public:
	Date(int year, int month, int day)
		:_year(year)
		, _month(month)
		, _day(day)
	{
		cout << "Date(int year, int month, int day)" << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};
	int main() {


		Date d1{ 2003,11,28 };
     	Date d1={ 2003,11,28 };//列表初始化可以省略赋值符号

	}

new多个对象列表初始化

new 多个日期类对象

c++11之前只能对这样new多个日期类:

11之后可以这样new多个日期:

vector,list,Date  列表初始化区别

Date只能初始化三个参数,因为Date构造函数只有三个参数:年,月,日:

多一个参数会报错,少一个参数也会报错:

但是vector,list初始化列表  参数不固定,根据需要自己决定参数个数。

难道vector写了很多个构造函数,每个构造函数都有不同的参数个数吗?

在vector的构造函数,c++11有一个构造函数叫:initializer_list

 initializer_list的用法如下:

auto会自动转化为initializer_list。

原理: initializer_list不存储数据,只是用两个指针指向数据开头和结尾

 initializer_list可以像容器一样去遍历:

同时, initializer_list还支持范围for:

用我之前自己模拟实现的vector来写区间调用:

vector · 孙鹏宇/孙鹏宇的第一个仓库 - 码云 - 开源中国 (gitee.com):

明显不可以调用。

我们写一个initializer_list构造函数就可以用了:

赋值也可以调用initializer_list构造,不过是深拷贝:

map也可以用 initializer_list

decltype

typeid()可以推导类型,但是它只是把类型以字符串的形式打印出来给你看一下,只能看不能用:

t的值肯定是double,但是假设我们不知道是什么类型,现在想在vector里用t的类型,auto用不了,因为auto不能作为参数类型。

typeid()也不行,因为它只能看,不能拿来用。

这个时候就只能用decltype了。


http://www.kler.cn/a/145580.html

相关文章:

  • 嵌入式知识点总结 操作系统 专题提升(一)-进程和线程
  • 蚁群算法 (Ant Colony Optimization) 算法详解及案例分析
  • docker 部署confluence
  • 7.8 ChatGPT 开发者模式实战:第三方天气查询平台对接,如何打造爆款天气应用?
  • YOLOv8改进,YOLOv8检测头融合DSConv(动态蛇形卷积),并添加小目标检测层(四头检测),适合目标检测、分割等
  • Tensor 基本操作1 unsqueeze, squeeze, softmax | PyTorch 深度学习实战
  • POJ 1795 DNA Laboratory 状态压缩DP(旅行商问题)
  • 《C++PrimePlus》第9章 内存模型和名称空间
  • 5.一维数组——输入一行字符,统计其中各个大写字母出现的次数。
  • 【Linux】23、内存超详细介绍
  • ABAP UT(单元测试)
  • JavaEE进阶学习:读取和存储对象
  • Instant Web API .Net Core Crack
  • 聊一聊索引覆盖的好处
  • C++标准模板(STL)- 类型支持 (类型修改,移除给定类型的一层指针,std::remove_pointer)
  • 深度学习图像修复算法 - opencv python 机器视觉 计算机竞赛
  • 虹科Pico汽车示波器 | 汽车免拆检修 | 2011款瑞麒M1车发动机起动困难、加速无力
  • STM32-使用固件库新建工程
  • docker安装nacos,实现和mysql容器的通信
  • 大数据平台/大数据技术与原理-实验报告--部署全分布模式Hadoop集群
  • [JVM] 美团二面,说一下JVM数据区域
  • AIGC原理:扩散模型diffusion综述一:面向视觉计算的扩散模型研究进展
  • 《C++PrimePlus》第10章 对象和类
  • Django框架之中间件
  • Spring基于xml注入bean的几种方式; Spring 框架中都用到了哪些设计模式;Spring的自动装配
  • WEICHSELBERGER MODEL