queue 与 vector

优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序

每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储。

例如:我们常用的操作就是对数据排序,优先队列默认的是数据大的优先级高

所以我们无论按照什么顺序push一堆数,最终在队列里总是top出最大的元素。

priority_queue<int, vector<int>, greater<int> >pq; 格式
第一个参数为数据类型
第二个参数为容器类型。
第三个参数为比较函数。////可以自定义 默认从大到小 ///先跳过自定义
STL里面默认用的是 vector. 比较方式默认用从大到小
还有一点要注意的是priority_queue中的三个参数,后两个可以省去,因为有默认参数,不过如果,有第三个参数的话,必定要写第二个参数。

用法:

  1. ///q.push (x);///将x接到队列的末端。  
  2. ///q.top ();///访问队首元素  
  3. ///q.pop ();///删除队首元素  
  4. ///q.front();///访问队首元素   最早被压入队列的元素。  
  5. ///q.back();///访问队尾元素    最后被压入队列的元素。  
  6. ///q.size();///访问队列中的元素个数  
  7. ///q.empty ();///判断是否为空   当队列空时,返回true。  
  1. //priority_queue <int>q;///默认从大到小排序输出  
  2.     ///priority_queue <int ,vector<int> , greater <int>  >q;///从小到大排序输出  >>会被认为是错误  中间要加空格  
  1.  while (!q.empty ())///使用的时候要先判断队列是否为空 不为空的话就清空。。  
  2.             q.pop ();  
原文地址:https://www.cnblogs.com/wshyj/p/6149112.html