C Deque 雙向佇列

2021-07-31 23:47:41 字數 2976 閱讀 2180

c++ deque(雙向佇列)

是一種優化了的、對序列兩端元素進行新增和刪除操作的基本序列容器。它允許較為快速地隨機訪問,但它不像

vector 

把所有的物件儲存在一塊連續的記憶體塊,而是採用多個連續的儲存塊,並且在乙個對映結構中儲存對這些塊及其順序的跟蹤。向

deque 

兩端新增或刪除元素的開銷很小。它不需要重新分配空間,所

以向末端增加元素比

vector 

更有效。

實際上,

deque 

是對vector 

和list 

優缺點的結合,它是處於兩者之間的一種容器。

deque的特點:

(1) 

隨機訪問方便,即支援

[ ] 

操作符和

vector.at() 

,但效能沒有

vector 好;

(2) 

可以在內部進行插入和刪除操作,但效能不及

list ;

(3) 

可以在兩端進行

push 

、pop ;

(4) 

相對於verctor 

占用更多的記憶體。

雙向佇列和向量很相似,但是它允許在容器頭部快速插入和刪除(就像在尾部一樣)。

1.constructors 

建立乙個新雙向佇列 語法

: deque();//

建立乙個空雙向佇列

deque( size_type size );// 

建立乙個大小為

size

的雙向佇列

deque( size_type num, const type &val ); //

放置num

個val

的拷貝到佇列中

deque( const deque &from );// 

從from

建立乙個內容一樣的雙向佇列

deque( input_iterator start, input_iterator end );

// start 

和 end - 

建立乙個佇列,儲存從

start

到end

的元素。

2.operators 

比較和賦值雙向佇列 //

可以使用

操作符訪問雙向佇列中單個的元素

3.assign() 

設定雙向佇列的值 語法

: void assign( input_iterator start, input_iterator end);

//start

和end

指示的範圍為雙向佇列賦值

void assign( size num, const type &val );//

設定成num

個val。

4.at() 

返回指定的元素 語法:

reference at( size_type pos ); 

返回乙個引用,指向雙向佇列中位置

pos上的元素

5.back() 

返回最後乙個元素 語法

: reference back();//

返回乙個引用,指向雙向佇列中最後乙個元素

6.begin() 

返回指向第乙個元素的迭代器 語法

: iterator begin();//

返回乙個迭代器,指向雙向佇列的第乙個元素

7.clear() 

刪除所有元素

8.empty() 

返回真如果雙向隊列為空

9.end() 

返回指向尾部的迭代器

10.erase() 

刪除乙個元素 語法

: iterator erase( iterator pos ); //

刪除pos

位置上的元素

iterator erase( iterator start, iterator end ); //

刪除start

和end

之間的所有元素 //

返回指向被刪除元素的後乙個元素

11.front() 

返回第乙個元素的引用

12.get_allocator() 

返回雙向佇列的配置器

13.insert() 

插入乙個元素到雙向佇列中 語法

: iterator insert( iterator pos, size_type num, const type &val ); //pos

前插入num

個val值

void insert( iterator pos, input_iterator start, input_iterator end ); //

插入從start

到end

範圍內的元素到

pos前面

14.max_size() 

返回雙向佇列能容納的最大元素個數

15.pop_back() 

刪除尾部的元素

16.pop_front() 

刪除頭部的元素

17.push_back() 

在尾部加入乙個元素

18.push_front() 

在頭部加入乙個元素

19.rbegin() 

返回指向尾部的逆向迭代器

20.rend() 

返回指向頭部的逆向迭代器

21.resize() 

改變雙向佇列的大小

22.size() 

返回雙向佇列中元素的個數

23.swap() 

和另乙個雙向佇列交換元素

語法:void swap( deque &target );// 

交換target

和現雙向佇列中元素

c deque 雙端佇列

雙端佇列 函式 描述c.assign beg,end c.assign n,elem 將 beg end 區間中的資料賦值給c。將n個elem的拷貝賦值給c。c.at idx 傳回索引idx所指的資料,如果idx越界,丟擲out of range。c.back 傳回最後乙個資料,不檢查這個資料是否存...

C deque 佇列) 的使用

序列 動態陣列 allocator aware 序列容器的元素按嚴格線性排列,可按順序訪問它們的位置 動態陣列允許直接訪問其任何元素,可快速在序列首尾相對快速進行元素新增 刪除 容器通過 allocator 物件動態處理儲存需求 public member function begin 將迭代器返回...

deque雙向佇列

deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式 deque的實現比較複雜,內部會維護乙個map 注意!不是stl中的map容器 即一小塊連續的空間,該空間中每個元素都是指標,指向另一段 較...