說明:vector 容器是單向開口的連續記憶體空間,deque 則是一種雙向開口的連續線性空間。所謂的雙向開口,意思是可以在頭尾兩端分別做元素的插入和刪除操作,當然,vector 容器也可以在頭尾兩端插入元素,但是在其頭部操作效率奇差,無法被接受。
注意:deque 容器的迭代器並不是普通的指標,其複雜度和 vector 不是乙個量級,這影響各個運算的層面。因此,除非有必要,我們應該盡可能的使用 vector,而不是 deque。
1.建構函式
1 dequedeq; //預設構造形式
2 deque(beg,end); //
建構函式將[beg, end)區間中的元素拷貝給本身
3 deque(n,elem); //
建構函式將 n 個 elem 拷貝給本身
4 deque(const deque &deq); //
拷貝建構函式
2.賦值操作
1 assign(beg,end); //將[beg, end)區間中的資料拷貝賦值給本身
2 assign(n,elem); //
將 n 個 elem 拷貝賦值給本身
3 deque& operator=(const deque &deq); //
過載等號操作符
4 swap(deq); //
將 deq 與本身的元素互換
3.大小操作
1 deque.size(); //返回容器中元素的個數
2 deque.empty(); //
判斷容器是否為空
3deque.resize(num);4//
重新指定容器的長度為 num,若容器變長,則以預設值填充新位置;如果容器變短,則末尾超出容器長度的元素被刪除。
5deque.resize(num, elem); 6//
重新指定容器的長度為 num,若容器變長,則以 elem 值填充新位置,如果容器變短,則末尾超出容器長度的元素被刪除。
4.雙端插入和刪除操作
1 push_back(elem); //在容器尾部新增乙個資料
2 push_front(elem); //
在容器頭部插入乙個資料
3 pop_back(); //
刪除容器最後乙個資料
4 pop_front(); //
刪除容器第乙個資料
5.訪問資料
1 at(idx);//返回索引 idx 所指的資料,如果 idx 越界,丟擲 out_of_range
2operator;//
返回索引 idx 所指的資料,如果 idx 越界,不丟擲異常,直接出錯
3 front();//
返回第乙個資料
4 back();//
返回最後乙個資料
6.插入操作
1 insert(pos,elem);//在 pos 位置插入乙個 elem 元素的拷貝,返回新資料的位置
2 insert(pos,n,elem);//
在 pos 位置插入 n 個 elem 資料,無返回值
3 insert(pos,beg,end);//
在 pos 位置插入[beg,end)區間的資料,無返回值
7.刪除操作
1 clear(); //移除容器的所有資料
2 erase(beg,end); //
刪除[beg,end)區間的資料,返回下乙個資料的位置
3 erase(pos); //
刪除 pos 位置的資料,返回下乙個資料的位置
STL 之 deque的用法
deque雙端佇列,及支援vector的隨機訪問,也支援list的前後兩端插入刪除,功能很強大,現總結一下其主要用法 deque與vector很類似,vector的函式操作好像deque都支援,而且也支援pop front和push front,但是占用記憶體較多 支援dequea 100 操作 主...
stl之序列容器 deque
相比於vector,deque是一種雙向開口的連續線性空間,可以在頭尾兩端分別做元素的插入和刪除操作。這也決定了其更賦值的容器結構。deque內部維護了start和finish 節點,用於雙端的插入和刪除 map,一塊連續空間,其每個元素都是個指標,指向乙個節點。其指向的節點中有四個元素 cur f...
STL之deque(雙向佇列)
deque雙向佇列是一種雙向開口的連續線性空間,可以高效的在頭尾兩端插入和刪除元素,deque在介面上和vector非常相似,下面列出deque的常用成員函式 deque在vector函式的基礎上增加了一些函式,體現了雙向佇列的雙向性 push front 在佇列前插入乙個元素 push back ...