deque
全名是 double-ended queue,支援在頭尾快速插入與刪除,同時提供隨機存取。記憶體配置為分塊連續,兼具靈活性與效率。
特性
- 頭尾插入與刪除效率高(O(1))。
- 支援隨機存取(O(1))。
- 非頭尾插入與刪除效率較低(O(n))。
成員函數介紹
- push_back:將元素添加到尾端。
- push_front:將元素添加到頭部。
- pop_back:移除尾端的元素。
- pop_front:移除頭部的元素。
- back:取得尾端的元素。
- front:取得頭部的元素。
- size:返回元素的數量。
- empty:返回是否沒有元素。
- erase:移除指定位置或範圍的元素。
- clear:清除所有元素。
- insert:在指定位置插入新元素。
deque
沒有 find
這個成員函數,如果需要尋找指定元素的話,要用包含在 <algorithm>
裡面的 find
函數。
用法範例
#include <iostream>
#include <deque>
using namespace std;
int main() {
// 建立雙端佇列
deque<int> deq;
// 在頭尾新增元素
deq.push_back(5);
deq.push_front(10);
deq.push_back(12); // 此行執行後deq=[10,5,12]
// 透過索引存取與修改元素
deq[1] = 25; // 此行執行後deq=[10,25,12]
// 透過頭尾存取元素
int value_f = deq.front(); // value_f=10
int value_b = deq.back(); // value_b=12
// 移除頭尾元素
deq.pop_front(); // 此行執行後deq=[25,12]
deq.pop_back(); // 此行執行後deq=[25]
// 取得大小
int size = deq.size(); // deq.size()=1
return 0;
}
適用場景
- 需要在頭尾快速操作時。
- 需要隨機存取但不希望使用
vector
的記憶體連續性限制時。