首先,問題由vector和數組的數據引用格式類似引出。由array[i],vector[i]產生疑問,數組和vector的賦值方式類似嗎?是不是有別的共同點呢?最後結論:除了各自的引用有一種恰巧外形類似,別的方面基本沒有共同點。詳細資料如下:
簡要回顧一下array數組和vector(姑且稱之向量)的部分基礎:
一、Array與Vector
1.Array
Array,是一種內置類型,存放在由系統“棧”中,由系統執行對應內存的分配與釋放。
Array的類型:int[維度]。array的類型不是簡單的類型標識符,而是類型+[維度]組合而成的特殊類型。
Array的引用:array[i],i表示希望引用的數據在數組中對應的位置,由0開始查詢。
Array的初始化:從概念上講,Array使用前必須指定其類型與大小,初始化時形式上可以不指定,但本質上是由系統計算並使用對應類型的初值填充。如:int[] = {1};int[2] = {1};
訪問Array數組元素:a[],括號內維度不可越界。
2.vector
vector,是一種類模板,存放在“堆”找那個,由標準模板庫中的程序負責內存的分配和釋放,操作簡單。
vector的類型:爲定義時vector <>中<>內的類型,vertor的大小可以變化。
vector的大小:可以通過push_back或者pop對vector的大小進行變化。
vector的初始化:①默認初始化,vector<int> ilist1,size和capacity都爲0,需要之後使用時添加。
②拷貝賦值初始化:vector<int> ilist2(ilist); vector<int> ilist2 = ilist; 首先ilist與ilist2的類型需要一致,賦值完成時ilist2將具有與ilist一樣的容量與元素。
③列表賦值法vector<int> ilist = {1,2,3.0,4,5,6,7}; vector<int> ilist {1,2,3.0,4,5,6,7}; 需要注意花括號中的值類型是否與尖括號中的類型保持一致。
④默認值初始化,vector<int> ilist(7,3); 意爲名爲ilist的vector被初始化成功,並擁有了七個類型爲int值爲3的元素。
3.數組與vector的區別
①內存的存放位置及分配與釋放區別
②大小是否固定
③初始化方式
④執行效率。因爲vector在拓寬內存時需要消耗大量companity