跳至主要内容

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,因為堆疊現在有元素

Reference