优先队列

优先队列里面默认是从大到小排序,这里的>符号将排序改成从小到大排序

#include<bits/stdc++.h>

using namespace std;
struct node
{
   
	int age;
	string name;
	bool operator < (const node &t) const
	{
   
		//将堆里面的内容按照,年龄从小到大排序 
		return age>t.age;
	}
}p[100];
int main()
{
   
	int n;
	cin>>n;
	priority_queue<node> heap;
	for(int i=0; i<n; i++) 
	{
   
		cin>>p[i].age>>p[i].name;
		heap.push({
   p[i].age,p[i].name});
	}
	for(int i=0; i<n; i++) 
	{
   
		node tmp = heap.top();
		heap.pop();
		cout<<tmp.age<<" "<<tmp.name<<endl;
	}
	return 0;
}
//4
//10 jack
//3 tom
//2 ak
//99 ac

sort

sort默认是从小到大排序 ,这里的">",让sort从大到小排序

#include<bits/stdc++.h>

using namespace std;
struct node
{
   
	int age;
	string name;
	bool operator < (const node &t) const
	{
   
		//利用sort,按照年龄小到大排序 
		return age>t.age;
	}
}p[100];
int main()
{
   
	int n;
	cin>>n;
	priority_queue<node> heap;
	for(int i=0; i<n; i++) 
	{
   
		cin>>p[i].age>>p[i].name;
		//heap.push({p[i].age,p[i].name});
	}
	sort(p,p+n);
	for(int i=0; i<n; i++) 
	{
   
// node tmp = heap.top();
// heap.pop();
		cout<<p[i].age<<" "<<p[i].name<<endl;
	}
	return 0;
}
//4
//10 jack
//3 tom
//2 ak
//99 ac