首先,問題由vector和陣列的資料引用格式類似引出。由array[i],vector[i]產生疑問,陣列和vector的賦值方式類似嗎?是不是有別的共同點呢?最後結論:除了各自的引用有一種恰巧外形類似,別的方面基本沒有共同點。詳細資料如下:
簡要回顧一下array陣列和vector(姑且稱之向量)的部分基礎:
一、array與vector
1.array
array,是一種內建型別,存放在由系統「棧」中,由系統執行對應記憶體的分配與釋放。
array的型別:int[維度]。array的型別不是簡單的型別識別符號,而是型別+[維度]組合而成的特殊型別。
array的引用:array[i],i表示希望引用的資料在陣列中對應的位置,由0開始查詢。
array的初始化:從概念上講,array使用前必須指定其型別與大小,初始化時形式上可以不指定,但本質上是由系統計算並使用對應型別的初值填充。如:int = ;int[2] = ;
訪問array陣列元素:a,括號內維度不可越界。
2.vector
vector,是一種類模板,存放在「堆」找那個,由標準模板庫中的程式負責記憶體的分配和釋放,操作簡單。
vector的型別:為定義時vector <>中<>內的型別,vertor的大小可以變化。
vector的大小:可以通過push_back或者pop對vector的大小進行變化。
vector的初始化:①預設初始化,vectorilist1,size和capacity都為0,需要之後使用時新增。
②拷貝賦值初始化:vectorilist2(ilist); vectorilist2 = ilist; 首先ilist與ilist2的型別需要一致,賦值完成時ilist2將具有與ilist一樣的容量與元素。
③列表賦值法vectorilist = ; vectorilist ; 需要注意花括號中的值型別是否與尖括號中的型別保持一致。
④預設值初始化,vectorilist(7,3); 意為名為ilist的vector被初始化成功,並擁有了七個型別為int值為3的元素。
3.陣列與vector的區別
①記憶體的存放位置及分配與釋放區別
②大小是否固定
③初始化方式
④執行效率。因為vector在拓寬記憶體時需要消耗大量companity
C 陣列array與vector的比較
1.陣列的為數必須用 值大於等於1的常量表示式定義,且只能包含整型字面值常量,列舉常量或者用常量表示式初始化的整型const物件,非const變數以及需要到執行階段才知道其值的const變數都不能用來定義陣列的維度 2.陣列的維度必須用 內指定 3.顯示初始化陣列元素的時候用 括起來,成為初始化列表...
C 陣列array與vector的比較
vector 是stl中的容器類,包含多種通用演算法 長度可變,使用靈活,但效率稍低 vector是使用 new 和 delete 來管理記憶體的 1 array 定義的時候必須定義陣列的元素個數 而vector 不需要 且只能包含整型字面值常量,列舉常量或者用常量表示式初始化的整型const物件,...
C 與 STL 動態陣列 vector
摘自 博主柳婼 vector 是乙個模板類 所以使用時要用 vectora 或者vectorb 這樣的方式來宣告乙個 vector vector 是乙個類似於 int a 的整數陣列,而 vector 是乙個類似於 string a 的字串陣列 clear 清空resize 改變大小 push ba...