STL之stack(棧)
阿新 • • 發佈:2019-01-04
棧的操作如下:
1.
stack<data_type>name;//如:stack<int>z;定義一個數據型別為data_type的棧name。
2.
stack<data_type>name(name2);//如:stack<int>z(z2);將棧name2中的元素複製到一個新棧name中。
3.
name.push(variable);//如:z.push(a);將a壓入棧z的頂端。
4.(棧不能為空的情況下)
name.pop();//如:z.pop();彈出一個z棧的棧頂元素。
5.(棧不能為空的情況下)
variable=name.top();//如:k=z.top();將z棧的棧頂元素賦值給一個變數k。
6.
variable=name.size();//如:k=z.size();將z棧的元素個數賦值給一個變數k。
7.
name.empty();//如:z.empty();檢驗棧是否為空,空返回為1,非空返回為0;
總體操控樣例如下:
#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
typedef long long ll;
inline ll read()//輸入
{
char ls=getchar(),k=0;for(;ls<'0'||ls>'9' ;k=ls,ls=getchar());
ll x=0;for(;ls>='0'&&ls<='9';ls=getchar())x=x*10+ls-'0';
if(k=='-')x=-x;return x;
}
stack<ll>z;//stack<data_type>name;定義棧z 型別long long
int main()
{
ll a[12]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<=9;++i)
z.push(a[i]);//將a陣列的元素依次壓入棧頂
cout <<z.size()<<endl;//輸出棧中的元素個數共10個
cout<<z.top()<<endl;//返回棧頂元素10
z.pop();
cout<<z.top()<<endl;//10被彈出,返回棧頂元素9
cout<<z.empty()<<endl;//此時棧不為空,返回0
stack<ll>z2(z);//複製棧z到新棧z2
cout<<z2.size()<<endl;//輸出z2中的元素個數共9個
for(int i=0;i<=8;++i)
{
cout<<z2.top()<<" ";//檢驗複製結果,依次彈出棧中的元素
z2.pop();
}cout<<endl;
cout<<z2.empty()<<endl;//此時棧為空,返回1
//cout<<z2.top()<<endl;棧空時執行這句話記憶體會崩潰,應用程式錯誤
//所以輸出棧時一定要保證棧不為空
return 0;
}