跳至主要内容

C++ queue(STL) 用法與範例

queue 是 C++ 標準模板庫(STL)中的一種容器適配器(Container Adaptor),是一個先進先出(FIFO, First-In-First-Out)的資料結構,它只允許在隊尾添加元素和在隊首刪除元素。

操作

在末尾加入元素:q.push()

  • Time Complexity: O(1)
#include <queue>
using namespace std;

queue<int> q;
q.push(1); // queue 現在是 {1}
q.push(2); // queue 現在是 {1, 2}
q.push(3); // queue 現在是 {1, 2, 3}

移除第一個元素:q.pop()

  • Time Complexity: O(1)
queue<int> q;
q.push(1);
q.push(2);
q.pop(); // 移除 1,queue 現在是 {2}

清空 queue 中的所有元素:q.swap()

  • 雖然 queue 沒有直接的 clear() 函數,但可以通過對空的 queue 使用 swap() 方法來達到清空的效果。
  • Time Complexity: O(1)
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
queue<int> emptyQueue; // 創建一個空的 queue
q.swap(emptyQueue); // 現在 q 是空的,所有元素都在 emptyQueue 中

取值

取得第一個元素:q.front()

  • Time Complexity: O(1)
queue<int> q;
q.push(1);
q.push(2);
cout << q.front(); // 輸出 1

取得最後一個元素:q.back()

  • Time Complexity: O(1)
queue<int> q;
q.push(1);
q.push(2);
cout << q.back(); // 輸出 2

取得元素個數:q.size()

  • Time Complexity: O(1)
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
cout << q.size(); // 輸出 3

檢查 queue 是否為空:q.empty()

  • Time Complexity: O(1)
queue<int> q;
cout << q.empty(); // true,因為 queue 是空的
q.push(1);
cout << q.empty(); // false,因為 queue 現在有元素

Reference