前言: 笔者初学的时候,看网上资料很多且详尽,但是作为初学者,看了一堆没学过的代码后,也不知道自己到底怎么用,且就实际使用而言,只需熟练掌握一种即可了。故学会使用后作此入门式讲解,希望给你带来帮助~
以存储整形int的队列为例,定义方式如下:
#include<bits/stdc++.h>
using namespace std;
struct cmp{
bool operator()(const int&a, const int&b)
{
return a < b;
}
};
priority_queue<int, vector<int>, cmp>pq;
至于如果要存储自定义结构体,那么需要做一点调整:
#include<bits/stdc++.h>
using namespace std;
typedef struct node{
string name;
int value;
}Node;
struct cmp{
bool operator()(const Node&a, const Node&b)
{
return a.value < b.value;//依据结构体的value值进行排序
}
};
priority_queue<Node, vector<Node>, cmp>pq;
在main函数中使用队列时,常设置一个cur变量进行暂时存储,进而将cur存储进数组中:
int main()
{
Node cur;
while(cin>>cur.name>>cur.value)
{
pq.push(cur);
}
while(!pq.empty())
{
cout<<pq.top().name<<" "<<pq.top().value<<endl;
pq.pop();
}
}
ps:程序中使用了一个处理不知输入值的个数的技巧(“while(cin>>cur.name>>cur.value)”),
详情可参考文章:不知道输入数据有多少,到底怎么接收呢?(C/C++)-CSDN博客
运行结果如下图所示:
~ ღ ʕ̡̢̡•̫͡•ʔ̢̡̢ ღ ~
~希望对你有启发~