我们知道标准的容器类模板deque和list可以用来实现queue和+vector来实现stack。但是,如果我们总是使用相同的方法来访问,并且不能像使用deque(vector)那样使用at()或[]访问任意元素,那么这两种实现之间的区别是什么。
容器适配器,如stack
和queue
,是使用特定的操作子集实现的-任何将与特定适配器一起使用的容器都必须支持适配器所需的所有操作。
vector
不能与queue
容器适配器一起使用,因为:
任何支持操作front()、back()、push_back()和pop_front()的序列都可以用于实例化队列。
并且vector
不支持pop_front()
。
vector
、deque
或list
可以与stack
一起使用,因为这三个容器都支持stack
所需的操作:
任何支持操作back()、push_back()和pop_back(()的序列都可以用于实例化堆栈。