详细讲解 利用实际例子 c++有限队列 使用方法

来源:互联网 发布:少儿编程软件 编辑:程序博客网 时间:2024/06/05 10:31
/*
 优先队列的方法;
 q.push();//进队列
 q.pop();出队列
 q.top();返回队头
 q.empty();判断队列是否为空
 q.size();返回队列的长度
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<queue>
using namespace std;
struct node
{
    int x,y,dir,sum;
    friend bool operator < (node n1,node n2)
    {
        return n1.sum>n2.sum; //<为从大到小,>大于从小到大;
    }
};
int main()
{
    priority_queue<int>q;//普通数据类型 优先级默认 从大到小。
    int a[]={1,4,2,5,3};
    for(int i=0;i<=4;i++)
    {
        q.push(a[i]);
    }
    for(int i=0;i<=4;i++)
    {
        printf("%d ",q.top());
        q.pop();
    }
    priority_queue<int,vector<int>,greater<int> > q2;//普通数据类型 greater从小到大排序,less从大到小排序;
    for(int i=0;i<5;i++)
    {
        q2.push(a[i]);
    }
    for(int i=0;i<5;i++)
    {
        printf("%d ",q2.top());
        q2.pop();
    }
    printf("\n");
    priority_queue<node>q3;
    for(int i=1;i<=10;i++)
    {
        node a={1,1,1,i};
        q3.push(a);
    }
    while(!q3.empty())
    {  node a=q3.top();
        printf("%d ",a.sum);
        q3.pop();
    }


}
原创粉丝点击