std::array vector 數組聯系和區別


    共同點

(1.)都和數組相似,都可以使用標准數組的表示方法來訪問每個元素(array和vector都對下標運算符[ ]進行了重載)
(2.)三者的存儲都是連續的,可以進行隨機訪問

    不同點

(0.)數組是不安全的,array和vector是比較安全的(有效的避免越界等問題)
(1.)array對象和數組存儲在相同的內存區域(棧)中,vector對象存儲在自由存儲區(堆)
(2.)array可以將一個對象賦值給另一個array對象,但是數組不行
(3.)vector屬於變長的容器,即可以根據數據的插入和刪除重新構造容器容量;但是array和數組屬於定長容器
(4.)vector和array提供了更好的數據訪問機制,即可以使用front()和back()以及at()(at()可以避免a[-1]訪問越界的問題)訪問方式,使得訪問更加安全。而數組只能通過下標訪問,在寫程序中很容易出現越界的錯誤
(5.)vector和array提供了更好的遍歷機制,即有正向迭代器和反向迭代器
(6.)vector和array提供了size()和Empty(),而數組只能通過sizeof()/strlen()以及遍歷計數來獲取大小和是否為空
(7.)vector和array提供了兩個容器對象的內容交換,即swap()的機制,而數組對於交換只能通過遍歷的方式逐個交換元素
(8.)array提供了初始化所有成員的方法fill()
(9.)由於vector的動態內存變化的機制,在插入和刪除時,需要考慮迭代的是否有效問題
(10.)vector和array在聲明變量后,在聲明周期完成后,會自動地釋放其所占用的內存。對於數組如果用new[ ]/malloc申請的空間,必須用對應的delete[ ]和free來釋放內存


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM