C++ vector和list的區別


數據結構的區別

vector

  vector與數組類似,擁有一段連續的內存空間,並且起始地址不變。便於隨機訪問,時間復雜度為O(1),但因為內存空間是連續的,所以在進入插入和刪除操作時,會造成內存塊的拷貝,時間復雜度為O(n)。

  此外,當數組內存空間不足,會采取擴容,通過重新申請一塊更大的內存空間進行內存拷貝。

List

  list底層是由雙向鏈表實現的,因此內存空間不是連續的。根據鏈表的實現原理,List查詢效率較低,時間復雜度為O(n),但插入和刪除效率較高。只需要在插入的地方更改指針的指向即可,不用移動數據。

 

迭代器支持不同

異:vector中,iterator支持 ”+“、”+=“,”<"等操作。而list中則不支持。

同:vector<int>::iterator和list<int>::iterator都重載了 “++ ”操作。


免責聲明!

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



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