天天看點

C++ STL容器之stack(棧)快速入門

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],尊重他人勞動成果,謝過~