C++ stack(STL) 用法與範例
stack
是 C++ 標準模板庫(STL) 中的 一種容器適配器(Container Adaptor),是一個後進先出(LIFO, Last-In-First-Out)的資料結構,它只允許在頂部
添加元素和刪除元素。
操作
在頂部加入元素:s.push()
- Time Complexity: O(1)
#include <stack>
using namespace std;
stack<int> s;
s.push(10); // stack 中現有 {10}
s.push(20); // stack 中現有 {10, 20}
s.push(30); // stack 中現有 {10, 20, 30}
移除頂部元素:s.pop()
- Time Complexity: O(1)
stack<int> s;
s.push(10);
s.push(20);
s.push(30);
s.pop(); // 移除 30,堆疊中現有 {10, 20}
清空堆疊中的所有元素:s.swap()
- 雖然 stack 沒有直接的
clear()
函數,但可以通過對空的 stack 使用swap()
方法達到清空的效果。 - Time Complexity: O(1)
#include <stack>
using namespace std;
stack<int> s;
s.push(10);
s.push(20);
s.push(30);
stack<int> emptyStack; // 創建一個空的 stack
s.swap(emptyStack); // 現在 s 是空的,所有元素都在 emptyStack 中
取值
獲取頂部元素:s.top()
- Time Complexity: O(1)
stack<int> s;
s.push(10);
s.push(20);
cout << s.top(); // 輸出 20
取得元素個數:s.size()
- Time Complexity: O(1)
stack<int> s;
s.push(10);
s.push(20);
s.push(30);
cout << s.size(); // 輸出 3
檢查堆疊是否為空:s.empty()
- Time Complexity: O(1)
stack<int> s;
cout << s.empty(); // true,因為堆疊是空的
s.push(10);
cout << s.empty(); // false,因為堆疊現在有元素