其实我就是水一发博客
STL中自带的栈和队列 库分别是stack和queue 支持的最主要的三个操作就是push pop 和top(front)
push是在栈或者队列的顶端放入一组数据
pop在栈中是取出顶端的一组数据 而在队列中是取出最底端的元素
top是访问栈中最顶端的数据
front是访问队列中最底端的数据
水一下代码
//stack
stack<ll> s;
int main(){
s.push(1);
s.push(2);
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(1);
q.push(2);
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
差不多就水这些