stl之序列容器 deque

2021-07-10 11:30:31 字數 619 閱讀 1748

相比於vector,deque是一種雙向開口的連續線性空間,可以在頭尾兩端分別做元素的插入和刪除操作。這也決定了其更賦值的容器結構。

deque內部維護了start和finish 節點,用於雙端的插入和刪除;map,一塊連續空間,其每個元素都是個指標,指向乙個節點。其指向的節點中有四個元素:cur、first、last用於維護緩衝區的頭尾和當前元素(分頭和尾情況),還有node節點指標,對應於map中的指定節點。其示意圖如下所示(摘自侯捷的"stl原始碼剖析"):

deque沒有所謂的容量(capacity)概念,因為它是動態地以分段聯絡空間組合而成,隨時可以增加一段新的空間並鏈結起來,而不會像vector那樣「分配一塊更大的新空間,再釋放舊空間」。也因此,deque沒有必要提供所謂的空間保留reserve功能。

其一些常用的元素操作如下:

push_front

push_back

size

front

back

pop_back

pop_front

clear

erase

insert

STL序列式容器之deque

deque是一種雙向開口的連續線性空間,所謂雙向是指可以在首尾兩端進行插入和刪除,邏輯結構如圖所示 deque和vector最大的差異在於deque可以在常數時間內對頭端進行插入和刪除操作,而且deque沒有容量的概念,隨時可以增加一段新的空間並鏈結起來。除非必要,應盡量使用vector而非dequ...

STL序列式容器之deque

deque概述 vector是單向開口的連續線性空間,deque則是一種雙向開口的連續線性空間。所謂雙向開口,意思是可以在頭尾兩端分別做元素的插入和刪除操作。vector當然也可以在頭尾兩端分別做元素的插入刪除操作 從技術上說 但是其頭部操作效率極差而無法被接受。deque和vector的最大差異,...

(五)STL序列容器(deque)

採用的是連續的線性空間 deque 儲存的空間是由一段一段等長的連續空間構成,各段空間之間並不一定是連續的,可以位於在記憶體的不同 為管理這些連續的空間,deque容器用陣列儲存著各個連續空間的位址,即陣列中儲存的都是指標,由於 deque 容器底層將序列中的元素分別儲存到了不同段的連續空間中,因此...