priority_queue的基本用法

来源:互联网 发布:mac os 重装系统 u盘 编辑:程序博客网 时间:2024/06/05 08:41
1、头文件:
#include <queue>


2、方法:
priority_queue empty() 如果队列为空返回真 
pop() 删除对顶元素 
push() 加入一个元素 
size() 返回优先队列中拥有的元素个数 
top() 返回优先队列队顶元素 在默认的优先队列中,优先级高的先出队。


3、priority_queue<int, vector<int>, greater<int> > qi2;//从小到大的优先级队列,可将greater改为less,即为从大到小

代码如下:

#include #include #include #include #include using namespace std;priority_queue,greater > m;//greater从小到大输出,less从大到小输出int main(){    int i,n;    int temp;    cin>>n;    for(i =0; i < n; i++)    {        cin>>temp;        m.push(temp);    }     while(!m.empty())     {         cout<



4、struct cmp
{
 bool operator()(int x, int y)
{
return x > y; // x小的优先级高
//也可以写成其他方式,如: return p[x] > p[y];表示p[i]小的优先级高
}

};

声明:priority_queue<int> q;

#include #include #include #include #include using namespace std;struct cmp{    bool operator ()(int x,int y)    {        return x>y; //小的优先级高    }};priority_queue,cmp> m;int main(){    int i,n;    int temp;    cin>>n;    for(i =0; i < n; i++)    {        cin>>temp;        m.push(temp);    }     while(!m.empty())     {         cout<



5、//重载x,一般重载<号,防止编译错误
struct node
{
int x, y;
friend bool operator < (node a, node b)
{
return a.x > b.x; //结构体中,x小的优先级高
}
};

priority_queue<node> q;//定义方法

#include #include #include #include #include using namespace std;struct node{    int x,y;    friend bool operator < (node a,node b)   //friend不能省略    {        return a.x>b.x; //小的优先级高    }};priority_queue m;int main(){    int i,n;    cin>>n;    node temp;    for(i =0; i < n; i++)    {        cin>>temp.x>>temp.y;        m.push(temp);    }     while(!m.empty())     {         cout<


原创粉丝点击