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

    priority_queue(优先队列)
    优先队列和队列不同,队列中元素按照进入的先后顺序出队,而优先队列中元素按照优先级出队。优先队列用二叉堆实现。
    头文件:priority_queue存在于<queue>,vector存在于<vector>,greater和less存在于<functional>
    1.定义一个优先队列
    最小值优先出队:priority _queue<int ,vector<int>,greater<int>> q;
    最大值优先出队 : priority_queue<int,vector<int>,less<int>> q;
    定义队列时要注意,后面两个“>"间有一个空格。假若没有空格,编译器会将其误认为”>>“运算符而无法正确编译。
    2.q.push(a):使a入队。
    3.q.top() : 返回优先级最高的元素,但不会移除元素。
    4.q.pop() : 移除优先级最高的元素。该函数无返回值。
    5.q.empty():判断队列是否为空。
    6.q.size() : 返回队列中已有元素的个数。

    如果需要使用自己的结构体,你需要重载复制构造函数和“>”(“<”)运算符。使用 less(最大值先出队),
    则需要重载“<”运算符;使用 greater(最小值先出队),则需要重载“>”运算符。例如:

    struct MyStruct
    {
    int v;
    MyStruct(int i):v(i) {}
    bool operator < (const MyStruct & b) const {return v < b.v;}
    };
    priority_queue < MyStruct,vector<MyStruct>,less<MyStruct> > q;

  • 相关阅读:
    COGS 577 蝗灾 线段树+CDQ分治
    BZOJ 1305 二分+网络流
    BZOJ 1066 Dinic
    BZOJ 3544 treap (set)
    BZOJ 3940 AC自动机
    BZOJ 1503 treap
    BZOJ 3172 AC自动机
    BZOJ 2553 AC自动机+矩阵快速幂 (神题)
    BZOJ1901 ZOJ2112 线段树+treap (线段树套线段树)
    BZOJ 3196 线段树套平衡树
  • 原文地址:https://www.cnblogs.com/skyakioi/p/13289983.html
Copyright © 2011-2022 走看看