• 关于优先队列浅析(priority_queue)


    优先队列 greater与less,

    自定义还有结构体(可以设置2层优先级)  模板;

    下面废话不多说直接上程序  

    注释的很明白

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<functional>
    #define nn 100000005
    #include<cstdio>
    #include<queue>
    using namespace std;
    queue<int > q;
    struct nood
    {
        int a,b;
    } p[nn],tmp;
    bool operator<(nood x,nood y)
    {
        return x.a>y.a;
    }
    /*
    bool operator<(int a,int b)
    {
    return a>b;
    }
    priority_queue<int > qqq; 
    //自定义 优先级 
    */
    //  greater 小到大 less  大到小
    //q.pop() 弹出最优元素 q.push()送入元素
    //q.empty()判断队列是否为空
    //q.size()  返回队列的长度
    priority_queue<int,vector<int>,greater<int> > qq;
    priority_queue<int,vector<int>,less<int> >qw;
    int main()
    {
        int a[4]= {16,6,8,1};
    
        for(int i=0; i<4; i++)
            qq.push(a[i]);
    
        for(int i=0; i<4; i++)
        {
            cout<<qq.top()<<endl;
            qq.pop();
        }
    
        for(int i=0; i<4; i++)
            qw.push(a[i]);
        cout<<endl;
        cout<<qw.size()<<endl;
        /*    for(int i=0; i<4; i++)
                {
                    cout<<qw.top()<<endl;
                    qw.pop();
                 }                          */
    cout<<endl;
    while(!qw.empty())
    {
        cout<<qw.top()<<endl;
        qw.pop();
    }
    cout<<endl<<qw.size()<<endl;
    
    //结构体优先级排序
    for(int i=0; i<5; i++)
        p[i].a=i;
    priority_queue<nood> stru;
    for(int i=0; i<5; i++)
        stru.push(p[i]);
    cout<<endl;
    cout<<stru.size()<<endl;
    cout<<endl;
    for(int i=0; i<5; i++)
    {
        tmp=stru.top();
        cout<<tmp.a<<" ";
        stru.pop();
    }
    cout<<endl<<stru.size()<<endl;
    
    /*priority_queue<nood,vector<nood>,greater<nood> > nod;
    for(int i=0; i<5; i++)
        nod.push(p[i].a);
    cout<<endl;
    for(int i=0; i<5; i++)
        cout<<nod.top()<<" ";
    cout<<nod.size()<<endl;
    for(int i=0; i<5; i++)
        nod.pop();
    cout<<endl<<nod.size()<<endl;*/
    return 0;
    }
  • 相关阅读:
    【JBPM4】State 节点
    【JBPM4】EL表达式的使用,实现JAVA与JPDL的交互
    不常见的javascript调试技巧
    mac navicat premium 使用技巧
    fnb2b分支拉取注意事项
    mac上为nodejs设置环境变量
    nodejs项目进程管理器之pm2
    有关defer和async的区别
    关于viewport我自己的理解
    样式技巧总结
  • 原文地址:https://www.cnblogs.com/maxv/p/10611982.html
Copyright © 2020-2023  润新知