admin管理员组

文章数量:1623792

一、用法

priority_queue<int> q;//从大到小自动排序
priority_queue<int, vector<int>, less<int> > q;//和第一个一样,从大到小排序
priority_queue<int, vector<int>, greater<int> > q;//从小到大排序

 比如顺序存入 789123 ,那么第一个第二个就会变成987321 第三个变成123789

二、难点理解

1、为什么有时是<int>有时是<int,vector<int>>?

一个int很好理解,就是一个一维数组的意思,

而两个的<int,vector<int>>,并不说它是个二维数组,也不是具有两个元素,

第二个vector<int>其实是存放排序后的容器,如果用到greater<int>,就必须在int 和 greater<int>之间加上vector<int>。

 

2、如何输入输出

 输入元素用push,比如加入12,就q.push(12)

输出用top,输出第一位,也就是最大或最小的数(具体是哪个看你选择的排序方式),

用q.top() 输出  //top()括号里应为空,不要加东西。

 

3、输出指定位置? 

输出只能输出top元素,无法指定某个位置元素输出。

 

4、只能输出第一个吗?

 如果你想输出第二个数,需要先把第一位的那个数丢掉,这样第二位就会根据排序自动前移到第一位。用q.pop()丢掉。

本文标签: 队列难点priorityqueue