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 現在有元素