天天看點

【資料結構】【C++STL】棧和FIFO隊列

其實我就是水一發部落格

STL中自帶的棧和隊列 庫分别是stack和queue 支援的最主要的三個操作就是push pop 和top(front)

push是在棧或者隊列的頂端放入一組資料

pop在棧中是取出頂端的一組資料 而在隊列中是取出最底端的元素

top是通路棧中最頂端的資料

front是通路隊列中最底端的資料

水一下代碼

//stack
stack<ll> s;
int main(){
        s.push();
        s.push();
        printf("%d\n" , s.top());
        s.pop();
        printf("%d\n" , s.top());
}  
           

在這個代碼中 第一個輸出的數是2 因為它最後入棧 但是随後pop掉了一個數 再輸出棧頂元素的時候就變成了 1

如果我們在之後再加兩句

s.pop();
        printf("%d\n" , s.top());
           

我們發現程式報錯了 pop掉了1 按說棧裡面應該什麼也沒有了

再水另一個代碼

//queue
queue<ll> q;
int main(){
        q.push();
        q.push();
        printf("%d\n" , q.front());
        q.pop();
        printf("%d\n" , q.front());
}
           

我們發現第一個輸出的數是1 因為1是最先入隊的 然後當pop掉第一個數的時候 我們發現再輸出的數就是2了 因為1最先入隊 也就最先出隊了

我們再加兩句話

q.pop();
        printf("%d\n" , q.front());
           

這個時候pop掉了2 但是程式卻傳回了0

差不多就水這些

繼續閱讀