STL通用容器之 deque 容器

2021-06-22 15:33:28 字數 2611 閱讀 1753

1.5deque容器

deque容器為乙個給定型別的元素進行線性處理,就如向量,它能夠快速地隨機進入任乙個元素,並且能夠高效地

入和刪除容器的尾部元素。但它與vector不同,deque能支援高效插入和刪除容器的頭部元素,也叫做雙端佇列.

(1)建構函式

deque();建立乙個空deque

deque(int nsize)   ;建立乙個deque,元素個數為nsize

deque(int nsize, const t& t);建立乙個deque,元素個數為nsize,且值均為t

deque (const deque &);拷貝建構函式

(2)增加函式

void push_front(const t& x);雙端佇列頭部增加乙個元素x

void push_back(const t& x);雙端佇列尾部增加乙個元素x

iterator insert(iterator it, const t& x);雙端佇列中某一元素前增加乙個元素x

void insert(iterator it, int n, const t& x);雙端佇列中某一元素前增加n個相同元素x

void insert(iterator it,const_iterator first, const_iterator last);

; 雙端佇列中某一元素前插入另乙個相同型別向量的[first,last)間的資料

(3)刪除函式

iterator erase(iterator it);;刪除雙端佇列中某乙個元素

iterator erase(iterator first, iterator last);刪除雙端佇列中[first,last)中元素

void pop_front();;刪除雙端佇列中最後乙個元素

void pop_back();;刪除雙端佇列中最後乙個元素

void clear();;刪除雙端佇列中所有元素

(4)遍歷函式

reference at(int pos);返回

pos位置元素的引用

reference front()

;返回首元素的引用

reference back()

;返回尾元素的引用

iterator begin()

;返回向量頭指標,指向第乙個元素

iterator end();返回向量尾指標,不包括最後乙個元素,在其下面

reverse_iterator rbegin()

;反向迭代器,功能等同

iterator end()

reverse_iterator rend()

;反向迭代器,功能等同

iterator begin()

(5)判斷函式

bool empty() const

;向量是否為空?若

true,

則向量中無元素。

大小函式

int size() const

;返回向量中元素的個數

int max_size() const

;返回最大可允許的雙端佇列元素數量值

(6)其它函式

void swap(vector&)

;交換兩個同型別向量的資料

void assign(int n, const t& x);

向量中第

n個元素設定成元素x

void assign(const_iterator first, const_iterator last);

向量中[first,last]

元素設定成當前

向量元素。

deque

中push_front

、pop_front

函式示例

#include#includeusing namespace std;

int main()

該段程式功能是:deque、vector初始化大小為2,第1個元素都為10,當通過push_back函式分別給兩容器

加乙個元素後,從結果發現原先保持的指標元素值對vector容器前後發生了變化,而對deque容器前後沒有

生變化.

以deque

為基礎,編乙個先進先出的佇列類。

#include#includeusing namespace std;

templateclass myqueue

;templatevoid myqueue::push(const t &t)

templatevoid myqueue::pop()

templateint myqueue::size()

templatebool myqueue::empty()

templatet &myqueue::front()

templatet &myqueue::back()

templatevoid myqueue::display()

myqueue.display();

myqueue.pop();

myqueue.display();

myqueue.push(6);

myqueue.display();

cout<

stl之序列容器 deque

相比於vector,deque是一種雙向開口的連續線性空間,可以在頭尾兩端分別做元素的插入和刪除操作。這也決定了其更賦值的容器結構。deque內部維護了start和finish 節點,用於雙端的插入和刪除 map,一塊連續空間,其每個元素都是個指標,指向乙個節點。其指向的節點中有四個元素 cur f...

STL通用容器之 list 容器

list容器 相對於vector的連續線性空間,list是乙個雙向鍊錶,它有乙個重要性質 插入操作和刪除操作都不會造成原有的list迭 器失效,每次插入或刪除乙個元素,就配置或釋放乙個元素空間。也就是說,對於任何位置的元素插入或刪除,list 遠是常數時間。1 建構函式 listc 建立乙個空的li...

STL容器 deque實現

vector是單向開口的連續線性空間,deque則是一種雙向開口的連續線性空間,可以在頭尾兩端分別做元素的插入和刪除操作。vector雖然從技術上也可以實現對頭尾兩端進行操作,但由於vector的底層實現特點的原因,其頭部操作效率奇差,故stl沒有為vector實現這一功能。deque和vector...