与栈相对的就是队列了,二者都是容器适配器一级的数据结构。
Queue的默认实现也是通过Deque实现的(这丫的通吃啊),也就最大程度保证了效率和空间的平衡。
- Queue是 先进先出(FIFO)的线型表。
- Queue只允许在尾端进行数据的插入,在头端进行数据的删除。
话不多说,上图:
队列需要注意的就是他的先进先出特性,这在以后学广度优先搜索时比较方便。
操作还是那几种:
queue <Elem> c 创建一个空的queue 。
queue <Elem> c(b) 复制一个的queue 。
front() 返回队列头部数据
back() 返回队列头部数据
push() 在队列尾部增加数据
pop() 队列头部数据出队
empty() 判断队列是否为空
size() 返回队列中数据的个数
额,这一篇和上一篇写的好无力……
priority_queue,优先队列,在元素进入队列后按照预设的函数进行排序,然后再进行操作。
这样的结构对于需要数据预处理排序的程序很适用,但是要注意,如果队列内的元素进行了排序,那么队首和队尾的相对关系也就不存在了(也就是说,先进先出的特性被破坏了,变成了最大或者最小值先出)。所以priority_queue不具有front()和back()方法,而且,优先队列和栈的操作相同(又是一个Deque式的存在……)。
priority_queue <Elem> c创建一个空的queue 。
注:priority_queue构造函数有7个版本
pop() 弹出栈顶元素
push() 栈顶压入元素
top() 获得栈顶元素
empty() 判断是否为空
size() 返回元素个数