ACM-priority_queue的用法

一直都想知道,priority_queue与queue的区别是啥,一直问别人,总找不到自己要的答案,哇,今天我在做一道题时,哈,又发现它,来说一说。

priority_queue是动态队列,每次弹出都会重新按照自定义排序进行重新编排。默认的是判断大小的符号是"<",数据大的优先,它与“>”一定要区分开,当你重载运算符时,只允许对"<"进行重载

为了更好的说明,我们先看常规的默认效果;

#include
#include
#include
using namespace std;
const int M=100;
struct node{
	string name;
	int  cost;
	node(string str,int co){
	 name=str;
	 cost=co;
	}
	friend bool operator<(const node &a,const node &b){
		return a.cost//注意! 数据大的优先
	} 
};
string nm[M];
string yourName;
int yourCost;
int yourYard; 
int cs[M];
priority_queue q[4];
int main()
{
	int n,t;
	cin>>n;
	cout<<"please intput "<>yourName>>yourCost>>yourYard;
		q[yourYard].push(node(yourName,yourCost));
	}
	cout<<"--------------------------"<

ACM-priority_queue的用法_第1张图片

接下来我们更改优先级

#include
#include
#include
using namespace std;
const int M=100;
struct node{
	string name;
	int  cost;
	node(string str,int co){
	 name=str;
	 cost=co;
	}
	friend bool operator<(const node &a,const node &b){
		return b.cost//注意! 数据小的优先
	} 
};
string nm[M];
string yourName;
int yourCost;
int yourYard; 
int cs[M];
priority_queue q[4];
int main()
{
	int n,t;
	cin>>n;
	cout<<"please intput "<>yourName>>yourCost>>yourYard;
		q[yourYard].push(node(yourName,yourCost));
	}
	cout<<"--------------------------"<

ACM-priority_queue的用法_第2张图片

你可能感兴趣的:(Acm)