其實我就是水一發部落格
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
差不多就水這些