3-31数组模板使用基础(C++11)

  1. vector动态分配内存空间,比较占用资源,所以C++提供了数组模板

  2. 使用数组模板需要引用“array”头文件

  3. 数组模板在定义上与数组定义有点差别,其他都差不多

  4. #include<iostream>
    #include<array>
    using namespace std;
    int main(int argc, char* argv[]) {
    	//定义一个数组模板的变量,第一个参数是类型,第二个参数是大小
    	//数组模板定义在堆上,所以定义之后不可以修改尺寸
    	array<string, 5> productNames = { "iPhone6","iPhoneXR" };
    	array<int, 3> codes;
    	codes = { 200,300,400 };
    	int abc[3] = { 1,5,10 };
    	/*********************数组与数组模板的区别*************/
    	/*1.数组与数组模板在后期初始化上不同
    	int codes1[3];
    	codes1 = { 1,2,3 };//数组是不可以这样的,语法错误
    	//数组要么在定义时全部初始化,要么在后期给元素单独初始化
    	*/
    	/*2.数组的尺寸允许使用变量。但是数组模板的尺寸不允许使用变量
    	const int size = 3;
    	array<int, size> coed1;
    	*/
    	/*3.数组模板不可以当做指针来用,数组可以
    	cout << *abc << endl;
    	*/
    	/*4.数组模板可以更容易获取数组的尺寸
    	*/
    	/*5.将数组赋给指针时引用复制,而数组模板之间的赋值时值的赋值
    	*/
    	/*************************************************/
    	//获取第一个数组元素
    	cout << productNames[0] << endl;
    	//输出数组模板的尺寸
    	cout << productNames.size() << endl;
    	//输出数组的尺寸
    	cout << sizeof(abc) / sizeof(int) << endl;
    	//注意:
    	//不管是数组、还是数组模板,都不要超出最大的范围
    	//枚举元素
    	for (int i = 0; i < 2; i++)
    	{
    		cout << productNames[i] << endl;
    	}
    	for (int value : codes)
    	{
    		cout << value << endl;
    	}
    	//数组模板的复制
    	array<int, 3> code1;
    	code1 = codes;//把codes的值复制过去
    	code1[0] = 123;
    	cout << code1[0] << endl;
    	cout << codes[0] << endl;//前面的赋值时值的传递,所以原数值不变
    	//数组的复制
    	int code2[]{ 1,2,3 };
    	//int code3[] = code2;//数组不可以这样复制,有语法错误
    	int* pCode = code2;//可以这样复制,但是这种复制是引用的复制
    	pCode[0] = 666;//此时code2的值也会改变
    	cout << code2[0] << endl;
    	return 0;
    
    }
    

发布了41 篇原创文章 · 获赞 14 · 访问量 1978

猜你喜欢

转载自blog.csdn.net/qq_43367829/article/details/105231492