與vector類型相比,數組的顯著缺陷在於:數組的長度是固定的,而且程式員無法知道一個給定數組的長度。數組沒有擷取其容量大小的size操作,也不提供push_back操作的其中自動添加元素。如果需要更改數組的長度,程式員只能建立一個更大的新數組,然後把原數組的所有元素複製到新數組空間中去。
現在C++程式更多地使用vector來取代數組,只有當效能測試表明使用vector無法達到必要的速度要求時,才使用數組。
數組是由類型名、標識符和維數組成的複合資料型別,類型名規定了存放在數組中的元素的類型,而維數則指定數組中包含的元素個數。
指標----用於指向對象。
建議:盡量避免使用指標和數組。
避免使用未初始化的指標。
如果可能的話,除非所指向的對象已經存在,否則不要先定義指標,這樣可避免定義一個未初始化的指標。
如果必須分開定義指標和其所指向的對象,則將指標初始化為0,。因為編譯器可檢測出0值的指標,程式可判斷該指標並未指向一個對象。
void*指標:
它可以儲存任何類型對象的地址。只支援幾種有限的操作:與另一個指標進行比較;向函數傳遞void*指標或從函數返回void*指標;給另一個void*指標賦值。
指標的算術操作:指標加上(或減去)一個整形數值n等效與獲得一個新指標,該新指標指向指標原來指向的元素之後(或之前)的第n個元素。
數群組類型的變數有三個重要的限制:數組長度固定不變,在編譯時間必須知道其長度,數組只在定義它的塊語句中存在。
動態分配的數組將一直存在,直到程式動態釋放它為止。
每一個程式在執行時都佔用一塊可用的記憶體空間,用於存放動態分配的對象,此記憶體空間稱為程式的自由儲存區或堆。C語言一般用malloc和free,C++一般用new和delete。
int *p=new int[10]();//數組會初始化為0
int *p=new int[10];//數組不會進行初始化
delete [] p;//釋放
string st3("Hello World");
char *str=st3.c_str();//返回c風格字串的表示方法。
使用數組初始化vector
const size_t arr_size=6;
int int_arr[arr_size]={0,1,2,3,4,5};
vector<int> ivec(int_arr,int_arr+arr_size);
vector<int> ivec(int_arr+1,int_arr+4);//int_arr[1],int_arr[2],int_arr[3]
C++沒有多維陣列,通常所指的多維陣列其實就是數組的數組。