1、优先队列
优先队列的结构体排序:结构体内自排序、结构体外排序
优先队列的比较符号刚好相反,“>”指从小到大排, "<"指从大到小排列
注意两种写法的差别
结构体外排序
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
struct Node
{
string name;
int age;
Node(){
}
//Node(string _name,int _age):name(_name),age(_age) {}
Node(string _name,int _age){
name=_name;
age=_age;
}
};
struct cmp {
bool operator () (const Node &a,const Node &b) {
if(a.age!=b.age)
return a.age > b.age; // 年龄从小到大
else return a.name > b.name; // 姓名从小到大
}
// 优先队列的比较符号刚好相反,“>”指从小到大排, "<"指从大到小排列
};
int main()
{
priority_queue<Node,vector<Node>,cmp >q;
q.push(Node("aaa",80));
q.push(Node("ccc",5));
q.push(Node("bbb",12));
q.push(Node("ddd",5));
while(!q.empty())
{
cout << q.top().name << " " << q.top().age << endl;
q.pop();
}
return 0;
}
结构体内自排序
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
// 结构体 自排序
struct Node
{
string name;
int age;
Node(){
}
//Node(string _name,int _age):name(_name),age(_age) {}