c 的vector array和陣列的比較

2021-07-07 05:12:34 字數 963 閱讀 3719

在c++11中,stl中提拱了乙個新的容器std::array,該容器在某些程度上替代了之前版本的std::vector的使用,更可以替代之前的自建陣列的使用。那針對這三種不同的使用方式,先簡單的做個比較:

相同點:

1. 三者均可以使用下表運算子對元素進行操作,即vector和array都針對下標運算子進行了過載

2. 三者在記憶體的方面都使用連續記憶體,即在vector和array的底層儲存結構均使用陣列

不同點:

1. vector屬於變長容器,即可以根據資料的插入刪除重新構建容器容量;但array和陣列屬於定長容量。

2. vector和array提供了更好的資料訪問機制,即可以使用front和back以及at訪問方式,使得訪問更加安全。而陣列只能通過下標訪問,在程式的設計過程中,更容易引發訪問 錯誤。

3. vector和array提供了更好的遍歷機制,即有正向迭代器和反向迭代器兩種

4. vector和array提供了size和判空的獲取機制,而陣列只能通過遍歷或者通過額外的變數記錄陣列的size

5. vector和array提供了兩個容器物件的內容交換,即swap的機制,而陣列對於交換只能通過遍歷的方式,逐個元素交換的方式使用

6. array提供了初始化所有成員的方法fill

7. vector提供了可以動態插入和刪除元素的機制,而array和陣列則無法做到,或者說array和陣列需要完成該功能則需要自己實現完成

8. 由於vector的動態記憶體變化的機制,在插入和刪除時,需要考慮迭代的是否失效的問題。

9. vector和array在宣告變數後,在生命週期完成後,會自動地釋放其所占用的記憶體。對於陣列,如果是採用new申請的記憶體空間,必須在使用delete完畢後手動釋放其記憶體。

基於上面的比較,在使用的過程中,可以將那些vector或者map當成陣列使用的方式解放出來,可以直接使用array;也可以將普通使用陣列但對自己使用的過程中的安全存在質疑的**用array解放出來。

vector,array和陣列的區別

相同點 三者均可以使用下表運算子對元素進行操作,即vector和array都針對下標運算子進行了過載 三者在記憶體的方面都使用連續記憶體,即在vector和array的底層儲存結構均使用陣列 不同點 vector屬於變長容器,即可以根據資料的插入刪除重新構建容器容量 1.5倍或者2倍 但array和...

C指標和陣列

c語言中,陣列需要注意的地方有兩點 1 c語言中只有一維陣列,陣列大小必須在編譯期就作為乙個常數確定下來,陣列中元素可以是任何型別物件,當然也可以是另外乙個陣列,這樣,要 出乙個多維陣列就不是一件難事了 2 對於乙個陣列,我們只能做兩件事 確定陣列大小,及獲得該陣列下標為0元素的指標,其他關於陣列操...

c 指標 和 陣列

include include 指標 就是記憶體位址 記憶體位址 就是指標 指標就是位址,位址就是指標 位址就是記憶體單元的編號 指標變數是存放位址的變數 指標和指標變數是兩個不同的概念 但是要注意 通常敘述會把指標變數簡稱為指標 實際含義不同 void sitch int a,int b main...