11 30c 陣列與vector的區別填坑

2021-09-02 05:48:12 字數 1125 閱讀 9124

首先,問題由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...