zoukankan      html  css  js  c++  java
  • STL优先队列模板

    1. 优先队列

    用途:按照某一个关键字对插入元素或删除元素后的数据集进行自动排序

    复杂度: logN

    2. 数据声明

    (1)头文件:#include<queue>

    (2)声明:  priority_queue <T> q; //T是一个泛型,可以是结构体

           priority_queue <T,vector<T>,greater<T> > q;

      greater函数也可以通过对结构体重载一个<运算符的bool函数

    3. 库函数

    q.size();//返回q里元素个数
    q.empty();//返回q是否为空,空则返回1,否则返回0
    q.push(k);//在q的末尾插入k
    q.pop();//删掉q的第一个元素
    q.top();//返回q的第一个元素
    q.back();//返回q的末尾元素

    4. 实例

    #include <iostream>
    #include <queue> 
    using namespace std;
    struct Node{
        int x, y;
        Node(int a=0, int b=0):
            x(a),y(b){}
    };
    bool operator<(Node a, Node b){//返回true时,说明a的优先级低于b
        //x值较大的Node优先级低(x小的Node排在队前)
        //x相等时,y大的优先级低(y小的Node排在队前)
        if( a.x== b.x ) return a.y> b.y;
        return a.x> b.x; 
    }
    int main(){
        priority_queue<Node> q;
        for( int i= 0; i< 10; ++i )
        q.push( Node( rand(), rand() ) );
        while( !q.empty() ){
            cout << q.top().x << ' ' << q.top().y << endl;
            q.pop();
        }
        return 0;
    }
  • 相关阅读:
    Python学习之旅(十二)
    Python学习之旅(十一)
    Python学习之旅(十)
    Python学习之旅(十)
    Python学习之旅(九)
    Python学习之旅(八)
    WPF 画刷应用
    WP8 学习 在APP.XAML中加入Resources
    WP8 学习 ApplicationBar 的创建 XAML代码
    WP8 学习 Onnavigatedto和OnnavigatedFrom的区别
  • 原文地址:https://www.cnblogs.com/czsharecode/p/10502281.html
Copyright © 2011-2022 走看看