STL之容器适配器(stack,queue)

适配器

  举个例子,以插座为例。插座的线插头是两口的,但是经过转换后插板却可以提供给你两口或者三口的接口。这个插座就可以称为插口适配器。
今天学习的stack,queue,priority_queue 都是基于STL现有容器衍生出来的“另一种风貌”,它们都不提供迭代器,不允许自身遍历行为
STL之容器适配器(stack,queue)_stack

stack
  • 栈中存储的元素满足“后进先出(简称LIFO)”的准则,
  • 底层默认采用 deque 基础容器的 stack 适配器。满足条件的基础容器有 vector、deque、list
    STL之容器适配器(stack,queue)_queue_02

STL之容器适配器(stack,queue)_queue_03

queue
  • queue容器适配器存储数据具有“先进先出(简称 "FIFO" )”的特点
  • queue 容器适配器底层容器可以选择 deque(STL默认实现) 和 list。手动指定 std::queue<int, std::list
  • 可以用基础容器来初始化 queue 容器适配器,只要该容器类型和 queue 底层使用的基础容器类型相同即可
    STL之容器适配器(stack,queue)_queue_04
priority_queue
  • 底层采用默认的 vector 容器,排序方式也采用默认的 std::less
  • 优先级队列之所以总能保证优先级最高的元素位于队头,最重要的原因是其底层采用堆数据结构(完全二叉树)存储结构
    STL之容器适配器(stack,queue)_queue_05