deque 雙端佇列入門

2021-10-05 06:32:59 字數 2649 閱讀 8079

歡迎前往我的個人部落格閱讀原文。

deque 雙端佇列容器和 vector 向量容器相同的是採用的都是線性表順序儲存結構;不同的是 deque 雙端佇列容器採用分塊的線性儲存結構來儲存資料,每塊的大小一般為 512 位元組,稱為乙個 deque 塊,所有的 deque 塊使用乙個 map 塊進行管理,每個 map 資料項記錄各個 deque 塊的首位址。

deque 塊在頭部和尾部都可插入和刪除元素:使用push_back()方法在尾部插入元素,會擴張佇列;使用push_front()方法在首部插入元素;使用insert()方法在中間插入元素。在考慮容器元素的容器記憶體分配策略和操作的效能的情況下,deque 相當於 vector 更有優勢。

使用 deque 雙端佇列容器需要宣告標頭檔案:

#include

建立 deque 物件和建立 vector 物件類似,一般有三種方法:

deque<

int> d;

deque<

float

> dd;

deque<

int>d(

10);

deque<

float

>d(

10,8.5)

;

#include

#include

using

namespace std;

intmain

(int argc,

char

* ar**)

執行結果:

#include

#include

using

namespace std;

intmain

(int argc,

char

* ar**)

輸出結果:

#include

#include

using

namespace std;

intmain

(int argc,

char

* ar**)

執行結果:

使用insert()方法也是要使用迭代器的,和前面幾種容器使用方法一樣。

根據前面的經驗,前向遍歷顯然有兩種方式,一種以陣列方式遍歷,一種以迭代器方式遍歷。

#include

#include

using

namespace std;

intmain

(int argc,

char

* ar**)

#include

#include

using

namespace std;

intmain

(int argc,

char

* ar**)

執行結果:

利用反向迭代器對雙端佇列容器進行反向遍歷:

#include

#include

using

namespace std;

intmain

(int argc,

char

* ar**)

輸出結果:

刪除元素可以從雙端佇列容器的首部、尾部、中部進行,另外,可以清空雙端佇列容器。

#include

#include

using

namespace std;

intmain

(int argc,

char

* ar**)

執行結果:

#include

#include

using

namespace std;

intmain

(int argc,

char

* ar**)

執行結果:

#include

#include

using

namespace std;

intmain

(int argc,

char

* ar**)

執行結果:

#include

#include

using

namespace std;

intmain

(int argc,

char

* ar**)

執行結果:

deque 的簡單知識就差不多了,c++ stl 中的容器大同小異,只需要記住一些特定的方法就可以了。

雙端佇列入門

最近學習到雙端佇列的時候,由於書上沒有給出例子,所以一時不太能理解什麼是雙端佇列 雙端佇列的定義 可以在兩端做插入和刪除操作的佇列就叫做雙端佇列 那,看到這個定義,我就犯迷糊了,什麼叫在兩端插入和刪除啊?剛開始我的疑惑是,如果給雙端佇列分配乙個長度為10的陣列,初始front指標和rear指標都指向...

雙端佇列(deque)

區別於資料結構的雙端佇列,這裡的是stl的!雙端佇列 deque容器類 include與vector 類似,支援隨機訪問和快速插入刪除,它在容器中某一位置上的操作所花費的是線性時間。與 vector不同的是,deque還支援從開始端插入資料 push front 此外deque 不支援與vector...

雙端佇列deque

雙端佇列deque容器是一種優化了的 在序列兩端對元素進行新增和刪除操作的基本序列容器。它也允許適度快速地進行隨機訪問 就像vector一樣,它也有乙個operator操作符,然而,它沒有vector的那種把所有的東西都儲存在一塊連續的記憶體塊中的約束。deque的典型實現是利用多個連續的儲存塊 同...