我是靠谱客的博主 香蕉小霸王,最近开发中收集的这篇文章主要介绍priority_queue 结构体的优先级设置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目标:使用结构体Node类型的优先队列,让其按照我们希望的顺序进行排序。

预备知识:会结构体的定义,和结构体类型的优先队列的定义,知道优先队列默认是最大堆排序(即top()得到的是最大的元素)

要做的事:在结构体内部重载小于号,即在结构体内加入以下内容

friend bool operator < (Node a,Node b){
    if(a.label!=b.label){return a.label < b.label};//希望label大的先出
    else return a.data > b.data;//希望data小的先出
}

友情提示:priority_queue不像queue,没有front()和back()方法,只有top()方法。像是queue和stack的杂交。

代码:

#include<queue>
#include<cstdio>

using namespace std;

struct Node{
	int data;
	int label;
	friend bool operator < (Node a,Node b){
		if(a.label!=b.label)return a.label<b.label;
		else return a.data > b.data; 
	}
	Node(int _data,int _label):data(_data),label(_label){} 
};

priority_queue<Node> Q; 

int main(){
	
	Node a = Node(1,1);
	Node b = Node(1,2);
	Node c = Node(2,1);
	Node d = Node(2,2);
	
	//把4个结点放进队列的先后顺序是无所谓的 
	Q.push(a);
	Q.push(b);
	Q.push(c);
	Q.push(d);
	
	//期望输出顺序是 b d a c
	while(!Q.empty()){
		printf("data = %d,label = %dn",Q.top().data,Q.top().label);
		Q.pop();
	} 
	
	return 0;
}

最后

以上就是香蕉小霸王为你收集整理的priority_queue 结构体的优先级设置的全部内容,希望文章能够帮你解决priority_queue 结构体的优先级设置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部