deque是連續空間(至少邏輯上看來如此),連續線性空間總令我們聯想到
array
或vector
。array
無法成長,
vector
雖可成長,卻只能向尾端成長,而且其所謂成長原是個假象,事實上是(
1)另覓更大空間;(
2)將原資料複製過去;(
3)釋放原空間三部曲。如果不是
vector
每次配置新空間時都有留下一些餘裕,其成長假象所帶來的代價將是相當高昂。
deque係由一段一段的定量連續空間構成。一旦有必要在
deque
的前端或尾端增加新空間,便配置一段定量連續空間,串接在整個
deque
的頭端或尾端。
deque
的最大任務,便是在這些分段的定量連續空間上,維護其整體連續的假象,並提供隨機訪問的介面。避開了「重新配置、複製、釋放」的輪迴,代價則是複雜的迭代器架構。
deque採用一塊所謂的
map(不是
stl的
map容器)作為主控,這裡所謂的
map是一小塊連續空間,其中每個元素(此處成為乙個節點,
node
)都是指標,指向另一段(較大的)連續線性空間,成為緩衝區。緩衝區才是
deque
的儲存空間主體。
sgi stl
允許我們指定緩衝區大小,預設值
0表示將使用
512bytes
緩衝區。
STL原始碼剖析 deque!!!
面試網易的時候特麼問我deque,從來沒用過啊 委屈臉 deque和vector的區別 deque允許於常數時間內對頭端進行元素的插入和移除操作。deque沒有capacity觀念。deque沒有像vector那樣 因舊空間不足而重新配置一塊更大的空間,然後複製元素,再釋放舊空間 如果想為deque...
STL之deque原始碼剖析
deque是一種那個雙向開口的連續線性空間,其頭尾端做元素的插入和刪除效率比vector效率高很多。deque和vector的最大差異,一在於deque允許常數時間內對頭尾端進行元素插入或移除操作,二在於deque沒有所謂容量概念,因為它是動態地分段連續空間組合而成,隨時可以增加一段新的空間並鏈結起...
STL原始碼剖析 序列式容器之deque
deque概述 deque是一種雙開口的連續線性空間,可以在頭尾兩端分別做元素的插入和刪除操作 deque沒有容量的概念,它是動態地以分段連續空間組合而成,隨時可以增加一段新的空間並鏈結起來 deque的中控器 deque由一段一段的定量連續空間構成 一旦有必要在deque前端或尾端增加新空間,便配...