1. 程式人生 > >vector和list有什麼區別?分別在什麼場景下應用?

vector和list有什麼區別?分別在什麼場景下應用?

Vector:順序表

優點:和陣列類似開闢一段連續的空間,並且支援隨機訪問,所以它的查詢效率高其時間複雜度O(1)。
缺點:由於開闢一段連續的空間,所以插入刪除會需要對資料進行移動比較麻煩,時間複雜度O(n),另外當空間不足時還需要進行擴容。

List:連結串列

優點:底層實現是迴圈雙鏈表,當對大量資料進行插入刪除時,其時間複雜度O(1)
缺點:底層沒有連續的空間,只能通過指標來訪問,所以查詢資料需要遍歷其時間複雜度O(n),沒有提供[]操作符的過載。

應用場景

vector擁有一段連續的記憶體空間,因此支援隨機訪問,如果需要高效的隨即訪問,而不在乎插入和刪除的效率,使用vector。

list擁有一段不連續的記憶體空間,如果需要高效的插入和刪除,而不關心隨機訪問,則應使用list。