-
vector动态分配内存空间,比较占用资源,所以C++提供了数组模板
-
使用数组模板需要引用“array”头文件
-
数组模板在定义上与数组定义有点差别,其他都差不多
-
#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; }
3-31数组模板使用基础(C++11)
猜你喜欢
转载自blog.csdn.net/qq_43367829/article/details/105231492
今日推荐
周排行