【C++教學】deque 頭尾皆可存取的queue 說明與用法範例

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 的記憶體連續性限制時。

返回頂端