stack是堆棧容器,是一種“先進後出”的容器。
如圖:
唯有等最後面進來的車子出去後,裏面的車子纔可以陸陸續續的出來!
stack是基於deque容器而實現的容器。
使用需包含頭文件#include <stack>
定義
stack<int> s1; // 默認使用deque存儲元素
//stack<int, deque<int>> s1;
// 可以自行修改爲其他容器存儲元素
stack<int, vector<int>> ss1;
stack<int, list<int>> ss2;
stack<double> s2;
stack<char> s3;
stack<int> s4(s1); // 拷貝構造
s1 = s4; // 賦值重載
// 元素入棧
s1.push(1);
// 元素出棧
s1.pop();
// 返回最後一個入棧的元素
s1.top();
因其返回的是引用,所以可以直接進行賦值:s1.top() = 10; // 可以進行修改
// 判斷容器是否爲空
s1.empty();
// 獲取棧裏面的元素個數
s1.size();
// 交換棧中的元素
s1.swap(s4);
注意: stack容器沒有迭代器,所以如果想要輸出容器裏面的值,唯有一下方法:
while (!s1.empty()) { // 如果不爲空則繼續執行
cout << s1.top() << " "; // 輸出最後一個入棧的值
s1.pop(); // 最後一個元素出棧
}
cout << endl;
測試代碼:
#include <iostream>
#include <Windows.h>
#include <stack>
#include <vector>
#include <list>
using namespace std;
int main(void) {
stack<int> s1; // 默認使用deque存儲元素
//stack<int, deque<int>> s1;
stack<int, vector<int>> ss1;
stack<int, list<int>> ss2;
stack<double> s2;
stack<char> s3;
stack<int> s4(s1); // 拷貝構造
s1 = s4; // 賦值重載
// 元素入棧
s1.push(1);
s1.push(3);
s1.push(5);
// 元素出棧
s1.pop();
// 返回最後一個入棧的元素
s1.top(); // s1.top() = 10; // 可以進行修改
// 判斷棧是否爲空
if (!s1.empty()) {
// 獲取棧裏面的元素個數
cout << s1.size() << endl;
}
// 交換棧中的元素
s1.swap(s4);
while (!s1.empty()) { // 如果不爲空則繼續執行
cout << s1.top() << " "; // 輸出最後一個入棧的值
s1.pop(); // 最後一個元素出棧
}
cout << endl;
system("pause");
return 0;
}
STL其他容器學習鏈接: