其实我就是水一发博客
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
差不多就水这些