queue與deque詳解及用法

2021-07-14 22:29:05 字數 2287 閱讀 5181

使用佇列時,標頭檔案

#include

#include

using namespace std;

定義佇列

queuec;

c.empty()判斷佇列是否為空,隊列為空時,返回為真,否則為假

c.size()返回佇列中資料的個數

c.pop()刪除佇列首元素但不返回其值

c.front()//返回佇列頭部資料,不刪除元素

c.back()//返回佇列尾部資料

c.push(elem)//在佇列尾部增加elem資料

deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似

c.assign(beg,end)       將[beg; end)區間中的資料賦值給c

c.assign(n,elem)        將n個elem的拷貝賦值給c。

c.at(idx)           傳回索引idx所指的資料,如果idx越界,丟擲out_of_range。

c.back()           傳回最後乙個資料,不檢查這個資料是否存在。

c.begin()           傳回迭代器重的可乙個資料。

c.clear()           移除容器中所有資料。

dequec           建立乙個空的deque。

dequec1(c2)      複製乙個deque。

dequec(n)        建立乙個deque,含有n個資料,資料均已預設構造產生。

dequec(n, elem)  建立乙個含有n個elem拷貝的deque。

dequec(beg,end)  建立乙個以[beg;end)區間的deque

c.~deque()   銷毀所有資料,釋放記憶體。

c.empty()           判斷容器是否為空。

c.end()               指向迭代器中的最後乙個資料位址。

c.erase(pos)            刪除pos位置的資料,傳回下乙個資料的位置。

c.erase(beg,end)   刪除[beg,end)區間的資料,傳回下乙個資料的位置。

c.front()           傳回地乙個資料。

get_allocator       使用建構函式返回乙個拷貝。

c.insert(pos,elem)      在pos位置插入乙個elem拷貝,傳回新資料位置。

c.insert(pos,n,elem)    在pos位置插入》n個elem資料。無返回值。

c.insert(pos,beg,end)在pos位置插入在[beg,end)區間的資料。無返回值。

c.max_size()       返回容器中最大資料的數量。

c.pop_back()       刪除最後乙個資料。

c.pop_front()       刪除頭部資料。

c.push_back(elem)   在尾部加入乙個資料。

c.push_front(elem)   在頭部插入乙個資料。

c.rbegin()           傳回乙個逆向佇列的第乙個資料。

c.rend()           傳回乙個逆向佇列的最後乙個資料的下乙個位置。

c.resize(num)       重新指定佇列的長度。

c.size()           返回容器中實際資料的個數。

c1.swap(c2)=swap(c1,c2)將c1和c2元素互換。

deque  需要分配空間   如果你的插入超過了 deque暫時的空間容量 就會重新分配乙個更大的空間給deque  所以較queue會慢

/*deque: 是乙個double-ended queue,

1)支援隨即訪問,也就是操作符,

2)支援兩端操作,push(pop)-back(front),在兩端操作上與list效率差不多

因此在實際使用時,如何選擇這三個容器中哪乙個,應根據你的需要而定,一般應遵循下面的原則: 

1、如果你需要高效的隨即訪問,而不在乎插入和刪除的效率,使用vector 

2、如果你需要大量的插入和刪除,而不關心隨即訪問,則應使用list 

3、如果你需要隨即訪問,而且關心兩端資料的插入和刪除,則應使用deque。

//雙向佇列 deque  

//by morewindows

#include #include #include using namespace std;

int main()

STL標準模板庫 queue及deque

是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素稱為...

Queue與Deque 佇列與雙端佇列

如果佇列沒有滿,將給定的元素新增到這個佇列尾部並返回true。如果佇列滿了,將丟擲illegalstateexception boolean add e element 如果佇列沒有滿,將給定的元素新增到這個佇列尾部並返回true。如果佇列滿了,將返回false boolean offer e el...

python 工具類之Queue元件詳解用法

目錄 佇列一直都是工程化開發中經常使用的資料型別,本篇文章主要介紹一下python queue的使用,會邊除錯 邊說明方法內容。python 3.6.13 初始化單向佇列 放置一些資料 可以使用full 方法判斷佇列是否已經塞滿資料,可以通過qsize 方法檢視佇列內元素數量。這時候我們從佇列取出資...