一 stack(使用时包含头文件<stack>,实际定义于<stl_stack.h>)
(1)stack以deque作为缺省的底部结构,也可以使用list。
缺省采用deque而不是vector的原因:deque移除元素时会释放内存,并且不必在重新分配时复制全部元素。
stack容器适配器的特点:
*stack不允许有遍历行为。stack只允许在最顶端删除、添加和获取最顶端元素的操作。
*只有最顶端的元素才有机会被外界取用,所以stack不提供走访功能,也不提供迭代器。
(2)常用操作函数:
核心接口:
push():将一个元素置于stack内。
top():返回stack内的“下一个”元素。//如果stack内没有元素,则执行top()和pop()会导致未定义操作。
pop():从stack中移除元素。
size():返回元素个数。
empty():判断stack是否为空。
如图:
二 queue(使用时需包含头文件<queue>,实际定义于<stl_queue.h>中)
(1)queue以deque作为缺省的底部结构。
queue的特点:
*queue不提供遍历功能,也不提供迭代器。
*除了最底端可以加入,最顶端可以区除外,无任何其他存取方法。
(2)常用操作:
核心接口:
push():会将一个元素置入queue中。
pop():从queue中移除一个元素。
front():返回queue内的第一个被置入的元素。
back():返回queue中的最后被插入的元素。
size():返回元素个数。
empty():判断queue是否为空。
如图: