轉載自http://blog.csdn.net/haust_wang/article/details/49848169
在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的動態內存變化的機制,在插入和刪除時,需要考慮迭代的是否失效的問題。
基於上面的比較,在使用的過程中,可以將那些vector或者map當成數組使用的方式解放出來,可以直接使用array;也可以將普通使用數組但對自己使用的過程中的安全存在質疑的代碼用array解放出來。