刷完栈和队列,对STL的内容有了更加深刻的认识。
STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)
栈的内部结构,栈的底层实现可以是 vector,deque,list 都是可以的, 主要就是数组和链表的底层实现。
可以出一道面试题:栈里面的元素在内存中是连续分布的么?
这个问题有两个陷阱:
- 陷阱1:栈是容器适配器,底层容器使用不同的容器,导致栈内数据在内存中不一定是连续分布的。
- 陷阱2:缺省情况下,默认底层容器是deque,那么deque在内存中的数据分布是什么样的呢? 答案是:不连续的,下文也会提到deque。
OK,上总结图: