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;
    
    }
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章