priority

xiaoxiao2021-02-28  222

1、头文件: #include <queue> 2、方法: priority_queue empty() 如果队列为空返回真  pop() 删除对顶元素  push() 加入一个元素  size() 返回优先队列中拥有的元素个数  top() 返回优先队列队顶元素 在默认的优先队列中,优先级高的先出队。

3、priority_queue<int, vector<int>, greater<int> > qi2;//从小到大的优先级队列,可将greater改为less,即为从大到小

代码如下:

#include #include #include #include #include using namespace std; priority_queue ,greater > m;//greater从小到大输出,less从大到小输出 int main() { int i,n; int temp; cin>>n; for(i =0; i < n; i++) { cin>>temp; m.push(temp); } while(!m.empty()) { cout< <

4、struct cmp {  bool operator()(int x, int y) { return x > y; // x小的优先级高 //也可以写成其他方式,如: return p[x] > p[y];表示p[i]小的优先级高 }

};

声明:priority_queue<int> q;

#include #include #include #include #include using namespace std; struct cmp { bool operator ()(int x,int y) { return x>y; //小的优先级高 } }; priority_queue ,cmp> m; int main() { int i,n; int temp; cin>>n; for(i =0; i < n; i++) { cin>>temp; m.push(temp); } while(!m.empty()) { cout< <

5、//重载x,一般重载<号,防止编译错误 struct node { int x, y; friend bool operator < (node a, node b) { return a.x > b.x; //结构体中,x小的优先级高 } };

priority_queue<node> q;//定义方法

#include #include #include #include #include using namespace std; struct node { int x,y; friend bool operator < (node a,node b) //friend不能省略 { return a.x>b.x; //小的优先级高 } }; priority_queue m; int main() { int i,n; cin>>n; node temp; for(i =0; i < n; i++) { cin>>temp.x>>temp.y; m.push(temp); } while(!m.empty()) { cout< <<" "< <

转载请注明原文地址: https://www.6miu.com/read-54181.html

最新回复(0)