介紹 C++ 標準函式庫所提供的堆疊(stack)功能用法,並提供基本的使用範例。
使用 C++ 堆疊
堆疊(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 函數將兩個堆疊中的內容互換。
