栈,是符合“后进先出”(Last In First Out,LIFO)规则的数据结构,有PUSH和POP两种操作,其中PUSH把元素压入“栈顶”,而POP从栈顶把元素“弹出”。

提示5-14:STL在stack头文件提供了栈,用“stack s”方式定义,用push()和pop()实现元素的进栈和出栈操作,top()取栈顶元素(但不删除)。

队列,是符合“先进先出”(First In First Out,FIFO)原则的“公平队列”。

提示5-15:STL的queue头文件提供了队列,用“queue s”方式定义,用push()和pop()进行元素的入队和出队操作,front()取队首元素(但不删除)。

优先队列是一种抽象数据类型(Abstract Data Type,ADT),行为有些像队列,但先出队列的元素不是先进队列的元素,而是队列中优先级最高的元素。

提示5-16:STL的queue头文件提供了优先队列,用“priority_queue s”方式定义,用push()和pop()进行元素的入队和出队操作,top()取队首元素(但不删除)。

自定义类型也可以组成优先队列,但必须为每个元素定义一个优先级。这个优先级不需要一个确定的数字,只需要能比较大小即可。

在某些特殊的情况下,需要使用自己定义方式比较优先级: