deque和STL队列(OR堆栈)的链表(+ vector)实现之间有什么区别?

时间:2012-03-11 13:16:19

标签: c++ stl stack queue implementation

我们知道标准容器类模板deque和list可用于实现queue和+ vector来实现堆栈。但是,这两个实现之间有什么区别,如果我们总是使用相同的方法来访问,也不能使用at()或[]来访问任意元素,就像我们使用deque(vector)一样。

1 个答案:

答案 0 :(得分:6)

容器适配器(例如stackqueue)是使用特定的操作子集实现的 - 任何将与特定适配器一起使用的容器都必须支持适配器所需的所有操作

vector不能与queue容器适配器一起使用,因为:

  

支持操作front(),back(),push_back()和pop_front()的任何序列都可用于实例化队列。

并且vector不支持pop_front()

vectordequelist可与stack一起使用,因为所有这三个容器都支持stack所需的操作:

  

支持操作back(),push_back()和pop_back()的任何序列都可用于实例化堆栈。