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



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

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

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

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

并且vector不支持pop_front()

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

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

相关内容

最新更新