#include與vector 類似,支援隨機訪問和快速插入刪除,它在容器中某一位置上的操作所花費的是線性時間。
與vector不同的是:deque 還支援從開始端插入資料:push_front() 。
此外deque 不支援與vector 的capacity() 、reserve() 類似的操作。
deque,是「double-ended queue」的縮寫。可以隨機訪問元素(用索引直接訪問)。
陣列頭部和尾部新增或移除元素都非常快速,但是在中部安插元素比較費時。
標頭檔案 #include
定義變數 dequemydeq;
主要成員函式
mydeq.clear() 移除容器中所有資料。
mydeq.push_front(elem) 在佇列首部加入乙個資料
mydeq.pop_front() 刪除佇列尾部資料
mydeq.push_back(elem) 在佇列尾部加入乙個資料
mydeq.pop_back() 刪除佇列尾部資料
mydeq.empty() 判斷佇列是否為空,為空返回true
mydeq.size() 返回容器中實際資料的個數。
mydeq.erase(pos) 刪除pos位置的資料,返回下乙個資料的位置。
mydeq.insert(pos,cnt,elem) 在pos位置插入cnt個資料elem。
mydeq.begin() 返回的指標指向陣列中的第乙個資料。
mydeq.end() 實際上是取末尾加一,以便讓迴圈正確執行--它返回的指標指向最靠近陣列界限的資料。
operator 返回容器中指定位置的乙個引用
deque舉例:
#include #includeview codeusing
namespace
std;
typedef deque
intdeque;
//從前向後顯示deque 佇列的全部元素
void put_deque(intdeque deque, char *name)
//測試deqtor 容器的功能
intmain()
#include,是一種雙線性列表,只能順序訪問(從前向後或者從後向前)。
list 的資料組織形式
與前面兩種容器類有乙個明顯的區別就是:它不支援隨機訪問。要訪問表中某個下標處的項需要從表頭或表尾處(接近該下標的一端)開始迴圈。而且缺少下標運算子:
operator 。
在任何位置上執行插入或刪除動作都非常迅速,內部只需調整一下指標。
內部實現: 雙向鍊錶
list
支援操作:
begin(), end(), size(), clear(), empty()
push_back(), pop_back()
push_front(), pop_front()
insert() o(1)
erase() o(1)
sort() o(nlogn),不同於中的sort
list仍然包含了erase(),begin(),end(),insert(),push_back(),push_front()這些基本函式,下面我們來演示一下list的其他函式功能。
merge():合併兩個排序列表;
sort():列表的排序;
list舉例:
#include #include#include
using
namespace
std;
void printit(listn)
int main(void
)
STL 雙端佇列(deque)和鍊錶(list)
include與vector 類似,支援隨機訪問和快速插入刪除,它在容器中某一位置上的操作所花費的是線性時間。與vector不同的是 deque 還支援從開始端插入資料 push front 此外deque 不支援與vector 的capacity reserve 類似的操作。deque,是 dou...
STL雙端佇列 deque
include include include include includeusing namespace std deque採用一塊map 不是stl中的map,是一塊連續空間 作為主控,每個元素都是乙個節點 cur fist last node 指向另一段連續較大的空間 成為緩衝區 預設512...
STL之Deque雙端佇列
今天要寫乙個樹的層次遍歷程式,要用到佇列,於是就查了一下deque的資料,如下。deque 總覽 deque 和 vector 一樣都是標準模板庫中的內容,deque 是雙端佇列,在介面上和 vector 非常相似,在許多操作的地方可以直接替換。假如讀者已經能夠有效地使用 vector 容器,下面提...