stack,俗稱為“棧”。
使用stack需于代碼頭部添加
#include
,并且随後加上一句:
using namespace std;
即可。
stack的定義
stack<typename> name;
其中typename可以任意資料類型或容器
元素通路
由于棧是後進後出的資料結構,是以STL中的stack中隻能通過top()來通路棧頂元素。
提示:使用top()函數前,必須用empty()判斷棧是否為空,否則可能因為棧空而出現錯誤。
将元素入棧
push(x):将x入棧,時間複雜度為O(1)
彈出棧頂元素
pop():用以彈出棧頂元素,時間複雜度為O(1)。
檢測stack内是否為空
Empty():傳回true為空,反之非空。
傳回stack内元素的個數
size():時間複雜度為O(1)
代碼
#include<stdio.h>
#include<stack>
using namespace std;
int main(){
stack<int> st;
if(st.empty()==true){//輸出Empty
printf("Empty\n");
}else{
printf("Not Empty\n");
}
for(int i = 1; i < 5; i++){
st.push(i);
}
printf("%d\n",st.top);//top()取棧頂元素,輸出為5
printf("%d\n",st.size());
}
複制
常見用途
用來模拟實作一些遞歸。(防止程式對棧記憶體的限制而導緻程式運作錯誤)
一般來說,程式的棧記憶體空間很小,若用普通的函數來遞歸,一旦層數過深(一般約為幾千到幾萬層),則會導緻程式運作崩潰。用棧來模拟遞歸算法的實作,則可以避免這一方面的問題.(不過題目中出現地比較少)
版權所有:可定部落格 © WNAG.COM.CN
本文标題:《C++ STL容器之stack(棧)快速入門》
本文連結:https://wnag.com.cn/824.html
特别聲明:除特别标注,本站文章均為原創,本站文章原則上禁止轉載,如确實要轉載,請電聯:[email protected],尊重他人勞動成果,謝過~