栈和队列是非常有用的数据结构,而且比较容易掌握和使用,他们的区别是什么呢,有一句话说的好:吃多了拉是队列,吃多了吐是栈;
首先先来看一下队列QUEUE:
queue 队列也是一个线性存储表,元素数据的插入在表的一端进行,在另一端删除,从而构成了一个先进先出FIFO(First In First Out)表。插入一端称为队尾,删除一端称为队首。 默认使用双端队列deque来实现,queue也可看成一个容器适配器,将 deque 容器转换为 queue 容器。当然,也可以利用其他合适的序列容器作为底层实现queue容器。
C++ STL对queue队列的泛化,是通过模板类型,将默认的deque双端队列类型导入,在内部创建一个序列容器对象,来处理 queue队列的数据存储和操作,包括queue队列是否为空、取队首元素、取队尾元素、元素入队和元素出队等。由于仅需要取队首和队尾元素的操作,因此queue队列容器并不提供任何类型的迭代器。
使用:
声明头文件“#include <queue>”
push():入队,即插入元素,在队尾插入;
pop():出队,即删除元素,在队首删除;
front():取队首元素;
back():取队尾元素;
empty():判断队列是否为空;
size():队列元素的个数;
备注:如果要取队首元素,然后将之从队列中删除,应该使用:
queue.front();//这里不是取队尾
queue.pop();