vector與list都是stl序列式容器,由於底層實現原理不同,所以兩個容器適用場景不同,我們在使用在使用兩個容器時,不由得會將它們進行對比。
vector
list
底層實現
動態順序表,底層空間連續
雙鏈表,底層空間不連續
插入與刪除
插入與刪除效率低,因為需要移動資料元素,時間複雜度為o(n)
插入與刪除效率高,不需要元素移動,時間複雜度o(1)
空間利用率
底層空間連續,空間利用率高
空間不連續,空間利用率低,容易產生空間碎片
訪問操作
支援隨機訪問,支援按下標訪問
不支援隨機訪問,想訪問只能從頭遍歷
迭代器原生態指標
對原生態指標的封裝
使用場景不同
空間小,需要隨機訪問
大量刪除與插入操作,不需要隨機訪問
迭代器失效
擴容導致迭代器失效
刪除導致迭代器失效
C vector和list的區別
1.vector資料結構 vector和陣列類似,擁有一段連續的記憶體空間,並且起始位址不變。因此能高效的進行隨機訪問,時間複雜度為o 1 但因為記憶體空間是連續的,所以在進行插入和刪除操作時,會造成記憶體塊的拷貝,時間複雜度為o n 另外,當陣列中記憶體空間不夠時,會重新申請一塊記憶體空間並進行記...
C vector和list的區別
1.vector資料結構 vector和陣列類似,擁有一段連續的記憶體空間,並且起始位址不變。因此能高效的進行隨機訪問,時間複雜度為o 1 但因為記憶體空間是連續的,所以在進行插入和刪除操作時,會造成記憶體塊的拷貝,時間複雜度為o n 另外,當陣列中記憶體空間不夠時,會重新申請一塊記憶體空間並進行記...
C vector和list的區別
1.vector資料結構 vector和陣列類似,擁有一段連續的記憶體空間,並且起始位址不變。因此能高效的進行隨機訪問,時間複雜度為o 1 但因為記憶體空間是連續的,所以在進行插入和刪除操作時,會造成記憶體塊的拷貝,時間複雜度為o n 另外,當陣列中記憶體空間不夠時,會重新申請一塊記憶體空間並進行記...