vector與陣列類似,擁有一段連續的記憶體空間,並且起始位址不變。便於隨機訪問,時間複雜度為o(1),但因為記憶體空間是連續的,所以在進入插入和刪除操作時,會造成記憶體塊的拷貝,時間複雜度為o(n)。
此外,當陣列記憶體空間不足,會採取擴容,通過重新申請一塊更大的記憶體空間進行記憶體拷貝。
list底層是由雙向鍊錶實現的,因此記憶體空間不是連續的。根據鍊錶的實現原理,list查詢效率較低,時間複雜度為o(n),但插入和刪除效率較高。只需要在插入的地方更改指標的指向即可,不用移動資料。
異:vector中,iterator支援 」+「、」+=「,」<"等操作。而list中則不支援。
同:vector::iterator和list::iterator都過載了 「++ 」操作。
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 另外,當陣列中記憶體空間不夠時,會重新申請一塊記憶體空間並進行記...