我们知道标准的容器类模板deque和list可以用来实现queue,+vector来实现stack。但是,如果我们总是使用相同的方法访问并且也不能像使用双端队列( vector )那样使用 at() 或 [] 访问任意元素,那么这两种实现之间有什么区别。
最佳答案
容器适配器,例如 stack
和 queue
,是使用特定的操作子集实现的——任何将与特定适配器一起使用的容器都必须支持所有适配器需要的操作。
vector
不能与 queue
容器适配器一起使用,因为:
Any sequence supporting operations front(), back(), push_back() and pop_front() can be used to instantiate queue.
并且 vector
不支持 pop_front()
。
vector
、deque
或 list
可以与 stack
一起使用,因为所有这三个容器都支持这些操作堆栈
需要:
Any sequence supporting operations back(), push_back() and pop_back() can be used to instantiate stack.
关于c++ - STL 队列(或堆栈)的双端队列和链表(+ vector )实现之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9655265/