STL原始碼剖析 deque的中控器

2021-07-22 14:23:41 字數 748 閱讀 5748

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前端或尾端增加新空間,便配...