Deque

非常罕見

在入門章節中,我們認識到甚麼是陣列以及如何應用它。但是如果我們想要額外增加 / 刪除內容呢?我們可以使用前面介紹的 vector 資料結構。只是你會發現到,你只能將變數從後加入 / 移除,但如果你想要往前呢?因為 vector 只能從後加入 / 移除,所以 deque 將是你的選擇。

簡介

deque ,全稱 double-ended queue ,意旨 " 雙端佇列 " ,在使用 。

當我們使用 vectordeque 時,一樣都可以隨機存取,只是有兩個不同的地方。

  1. vector 不同, deque 不具有記憶體連續性。
  2. deque 可以存取到前端資料,且可以從前端加入 / 移除資料。

以下是 deque 的示意圖:

圖片遺失

我們可以發現到, deque 的功能非常豐富,也補足了 vector 沒有的功能。

補充

由於 deque 的記憶體區位段具有非連續性,所以在隨機存取其他資料時會比 vector 慢,資料量大時此問題會較為明顯。

延伸閱讀 : 連結

語法

//deque<變數類型> 名稱;
deque<int> dq;

舉例

#include <bits/stdc++.h>
using namespace std;

deque<int> dq;
int arr[5] = {2, 3, 5, 4, 1};

void deque_print() {
    cout << "deque front : " << dq.front() << '\n' << "deque back  : " << dq.back() << '\n' << '\n';
    return;
}

int main() {
    for (int i = 0; i < 5; i++) {
        dq.push_back(arr[i]);
    }

    deque_print();
    dq.pop_back();
    deque_print();
    dq.push_front(arr[2]);
    deque_print();
    
    return 0;
}
deque front : 2
deque back  : 1

deque front : 2
deque back  : 4

deque front : 5
deque back  : 4