介紹 C++ 標準函式庫所提供的堆疊(stack)功能用法,並提供基本的使用範例。
堆疊(stack)是一種後進先出(LIFO, Last In First Out)的資料結構,在 C++ 中若要使用堆疊,可以運用 C++ 標準函式庫(STL)所提供的 stack
,以下是基本的使用範例:
#include <iostream> #include <stack> // 引入堆疊>標頭檔 int main() { std::stack<int> myStack; // 建立堆疊 for (int i = 0; i < 5; ++i) { myStack.push(i); // 放入元素 } // 傳回最上方的元素 std::cout << "Top: " << myStack.top() << std::endl; // 移除最上方的元素 myStack.pop(); // 傳回最上方的元素 std::cout << "Top: " << myStack.top() << std::endl; return 0; }
Top: 4 Top: 3
若要取得堆疊內的元素個數,可以使用 size
函數:
#include <iostream> #include <stack> int main() { std::stack<int> myStack; for (int i = 0; i < 5; ++i) { myStack.push(i); } // 取得堆疊內元素個數 std::cout << "Count: " << myStack.size() << std::endl; return 0; }
Count: 5
若要檢查堆疊內是否有任何元素,可以使用 empty
函數:
#include <iostream> #include <stack> int main() { std::stack<int> myStack; for (int i = 0; i < 5; ++i) { myStack.push(i); } // 檢查堆疊是否有元素(是否為空) if (myStack.empty()) { std::cout << "堆疊是空的。" << std::endl; } else { std::cout << "堆疊不是空的。" << std::endl; } return 0; }
堆疊不是空的。
若要將兩個堆疊的內容互換,可以使用 swap
函數:
#include <iostream> #include <stack> int main() { std::stack<int> myStack1, myStack2; for (int i = 0; i < 5; ++i) { myStack1.push(i); } for (int i = 10; i < 13; ++i) { myStack2.push(i); } // 將兩個堆疊內容互換 myStack1.swap(myStack2); // 輸出 myStack1 std::cout << "myStack1 = "; while (!myStack1.empty()) { std::cout << myStack1.top() << " "; myStack1.pop(); } std::cout << std::endl; // 輸出 myStack2 std::cout << "myStack2 = "; while (!myStack2.empty()) { std::cout << myStack2.top() << " "; myStack2.pop(); } std::cout << std::endl; return 0; }
myStack1 = 12 11 10 myStack2 = 4 3 2 1 0
這個範例一開始建立了 myStack1
與 myStack2
兩個堆疊,然後使用 swap
函數將兩個堆疊中的內容互換。
參考資料:Tutorialspoint