队列

来源:互联网 发布:景观大数据百度云盘 编辑:程序博客网 时间:2024/05/21 07:08
  • 队列分为deque,queue,priority_queue, 三者都包含在头文件 #include 中。

    • 双端队列deque
    • 队列queue
    • 优先队列priority_queue


双端队列(deque)


  • deque 介于vector和list之间,它是由多个存储段组成的。
  • 队列两端都可以插入和删除。
  • deque常用方法

  • front() : 队首元素引用。
  • back() : 队尾元素引用。
  • at(i) : 第i个元素q[i]

  • begin() : 迭代器
  • end()

  • push_back()
  • push_front()
  • pop_back()
  • pop_front()
  • insert(it,item)
  • erase(it,item)

  • empty()
  • size()
  • clear()

队列(queue)

  • queue 是一个适配器,以双端开口的STL容器 list 和 deque(默认容器)作为核心。
  • 只能在队列尾部插入,头部删除。
  • 主要操作有
  • front() : 取队首元素。
  • back() : 取队尾元素。
  • pop() : 删除队首元素。
  • push(item) : 在队尾插入新元素。
  • empty()
  • size()

优先队列(priority_queue)

  • 是适配器,基础容器有vector(默认容器),deque。
  • 默认为最大堆
template <class T, class Container = vector<T>,class Compare = less<typename Container::value_type> > class priority_queue;
  • 在尾部插入,删除最大或最小的元素。
  • 目前priority_queue采用的是基于完全二叉树的堆排序算法。

  • 主要操作有

    • pop : 删除队列中的最大元素。
    • push(item) : 在队尾插入新元素。
    • top()
    • empty()
    • size()