zoukankan      html  css  js  c++  java
  • STL ------ priority_queue(预习和复习)

    priority_queue与一个的实现是相同的,只不过它把 Put_Heap, Get_Heap 都简化了。它的定义如下:

    priority_queue <int> s;//定义一个名为 s 的大根堆
    

    假如说想要定义一个小根堆的话,可以这样:

    priority_queue <int, vector <int> , greater <int> > q //定义一个名字为 q 的小根堆
    priority_queue <int, vector <int> , less <int> > q //定义一个名字为 q 的大根堆
    

    priority_queue 也与queue的操作基本相同,具体如下:

    1. top
    int x = q.top(); //获取堆顶元素(root)的值,不对堆做出改变
    
    1. pop()
    q.pop(); //删除堆顶元素(root)并维护当前的堆(寻找下一个符合条件的值把它拉到堆顶)
    
    1. push()
    q.push(x); //把元素 x  插入堆中,并且维护这个堆(把 x 插入堆底,并向上查找,原理与堆相同)
    
    1. empty()
    q.empty(); //查询堆是否为空,如果是的话即返回 0 , 不是则反之
    
    1. size()
    int len = q.size(); // 查询堆内元素的个数
    

    注意!在进行 1 和 3 的操作的时候如果不能保证队列 (堆)中有元素,要先用操作 4 或5 来检查队列(堆)是否为空,否则会 RE !
    优先队列的内部实现其实就是一个堆 ,他也就是用来减少我们的代码量的(好东西)
    例题与我在这篇题解中是一样的,此处就不再赘述,拜拜!

    注 : 其他STL请点开我的博客阅读哦QWQ

  • 相关阅读:
    Python unittest单元测试框架总结
    RabbitMQ集群搭建
    mysql之mysqldump——备份与还原
    新版本Ubuntu本地提权漏洞复现
    Flash 零日漏洞复现(CVE-2018-4878)
    申论之道
    上海失业金
    C# GUID有什么用?
    C#通过接口或者父类可以调用子类的方法或者属性吗?
    C# 按逗号分隔字符串&强制类型转换string转double
  • 原文地址:https://www.cnblogs.com/cqbzyanglin/p/13509284.html
Copyright © 2011-2022 走看看