vector list deque的優缺點區別

2021-10-07 18:29:34 字數 900 閱讀 5196

優點:

缺點:詳細介紹:stl容器:vector的簡介與使用

優點:缺點:

詳細介紹:stl容器:list的簡介與使用

實際運用中vector和list是兩個相輔相成的容器

vector

list

底層結構

動態順序表,一段連續空間

帶頭結點的雙向迴圈鍊錶

隨機訪問

支援隨機訪問,訪問某個元素效率o(1)

不支援隨機訪問,訪問某個元素效率o(n)

插入和刪除

任意位置插入和刪除效率低,需要搬移元素,時間複雜度為o(n),插入時有可能需要增容,增容:開闢新空間,拷貝元素,釋放舊空間,導致效率更低

任意位置插入和刪除效率高,不需要搬移元素,時間複雜度為o(1)

空間利用率

底層為連續空間,不容易造成記憶體碎片,空間利用率高,快取利用率高

底層節點動態開闢,小節點容易造成記憶體碎片,空間利用率低,快取利用率低

迭代器原生態指標

對原生態指標(節點指標)進行封裝

迭代器失效

在插入元素時,要給所有的迭代器重新賦值,因為插入元素有可能會導致重新擴容,致使原來迭代器失效,刪除時,當前迭代器需要重新賦值否則會失效

插入元素不會導致迭代器失效,刪除元素時,只會導致當前迭代器失效,其他迭代器不受影響

使用場景

需要高效儲存,支援隨機訪問,不關心插入刪除效率

大量插入和刪除操作,不關心隨機訪問

deque結合了vector和list的優點->集大成者

支援隨機訪問,也支援頭插頭刪。但是隨機訪問的效率並不是很高,c++為了追求效率更喜歡用vector。

目前能看到的應用就是stl用它作為stack和queue的底層資料結構。

詳細介紹:stl容器:deque的簡介與使用

vector,list,deque。用法區別

stl提供了三個最基本的容器 vector,list,deque。vector和built in陣列類似,它擁有一段連續的記憶體空間,並且起始位址不變,因此它能非常好的支援隨即訪問,即操作符,但由於它的記憶體空間是連續的,所以在中間進行插入和刪除會造成記憶體塊的拷貝,另外,當該陣列後的記憶體空間不夠...

vector,list,deque。用法區別

stl提供了三個最基本的容器 vector,list,deque。vector和built in陣列類似,它擁有一段連續的記憶體空間,並且起始位址不變,因此它能非常好的支援隨即訪問,即操作符,但由於它的記憶體空間是連續的,所以在中間進行插入和刪除會造成記憶體塊的拷貝,另外,當該陣列後的記憶體空間不夠...

如何選擇vector list deque

我想把三個常用的序列式放在一起對比一下是有必要的 vector vector和built in陣列類似,擁有一段連續的記憶體空間,能非常好的支援隨即訪問,即操作符,但由於它的記憶體空間是連續的,所以在中間進行插入和刪除會造成記憶體塊的拷貝,另外,當插入較多的元素後,預留記憶體空間可能不夠,需要重新申...