STL原始碼剖析 deque!!!

2021-09-19 16:58:51 字數 586 閱讀 5304

面試網易的時候特麼問我deque,從來沒用過啊(委屈臉)。

deque和vector的區別:

deque允許於常數時間內對頭端進行元素的插入和移除操作。

deque沒有capacity觀念。

deque沒有像vector那樣「因舊空間不足而重新配置一塊更大的空間,然後複製元素,再釋放舊空間」。

如果想為deque排序,我們可以把deque複製到vector中然後給vector排序,再複製回deque(笑臉~)。

deque的迭代器非常的複雜。

首先,deque採用一塊所謂的map作為主控,map是一小塊連續空間,其中每個元素node都是指標,那麼這個map是乙個指向指標的指標,t**,node呢,指向另一端較大的連續線性空間,稱為快取區,快取區才是deque的儲存空間主體,預設512bytes乙個。

deque維護乙個指向map的指標,維護start,finish兩個迭代器,分別只想第一緩衝區的第乙個元素和最後緩衝區的最後乙個元素,還記住目前的map大小。map如果不夠大了,也是需要重新配置一塊更大的。

deque的迭代器有

了解了deque的資料結構,我們就可以知道deque的各種操作時會發生什麼了。

STL之deque原始碼剖析

deque是一種那個雙向開口的連續線性空間,其頭尾端做元素的插入和刪除效率比vector效率高很多。deque和vector的最大差異,一在於deque允許常數時間內對頭尾端進行元素插入或移除操作,二在於deque沒有所謂容量概念,因為它是動態地分段連續空間組合而成,隨時可以增加一段新的空間並鏈結起...

STL原始碼剖析 deque的中控器

deque是連續空間 至少邏輯上看來如此 連續線性空間總令我們聯想到 array 或vector array 無法成長,vector 雖可成長,卻只能向尾端成長,而且其所謂成長原是個假象,事實上是 1 另覓更大空間 2 將原資料複製過去 3 釋放原空間三部曲。如果不是 vector 每次配置新空間時...

STL原始碼剖析 序列式容器之deque

deque概述 deque是一種雙開口的連續線性空間,可以在頭尾兩端分別做元素的插入和刪除操作 deque沒有容量的概念,它是動態地以分段連續空間組合而成,隨時可以增加一段新的空間並鏈結起來 deque的中控器 deque由一段一段的定量連續空間構成 一旦有必要在deque前端或尾端增加新空間,便配...