• 容器适配器————heap


    堆(heaps)不是容器,而是一种特别的数据组织方式。堆一般用来保存序列容器

    堆是一个完全二叉树,每个节点与其子节点位置相对。父节点总是大于或等于子节点,这种情况下被叫作大顶堆,或者父节点总是小于或等于子节点,这种情况下叫作小顶堆。注意,给定父节点的子节点不一定按顺序排列。

    创建堆

    用来创建堆的函数定义在头文件 algorithm 中。max_heap() 对随机访问迭代器指定的一段元素重新排列,生成一个堆。默认使用的是 < 运算符,可以生成一个大顶堆。

    make_heap(iterator first,iterator last);//将[first,last)范围进行堆排序,默认less<int>(),降序
    make_heap(iterator first,iterator last,less<int>());
    make_heap(iterator first,iterator last,greater<int>());//升序

    堆操作

    堆不是容器,而是组织容器元素的一种特别方式。只能确定堆的范围,即开始和结束迭代器指定的范围。这意味着可以用容器中的元素子序列创建堆。可以在已生成的堆中添加元素。

    pop_heap() 

    将front移动到end前一位,即末尾,然后将剩下的元素重新堆排序成一个新heap,使用的规则要个make_heap一样。

    pop_heap(iterator first ,iterator last, cmpObject);

    push_heap()

    对刚插入尾部push_back元素后做堆排序。

    push_heap(iterator first ,iterator last, cmpObject)

    sort_heap()

    将一个做排序,最终成为一个有序的系列,可以看到sort_heap时,必须先是一个堆(两个特性:1、最大元素在第一个 2、添加或者删除元素以对数时间),因此必须先做一次make_heap。

    sort_heap(iterator first ,iterator last, cmpObject)
  • 相关阅读:
    大整数模拟
    MSSQL存储过程中获取记录集并循环操作一例
    about协议的妙用
    C#基础概念二十五问
    很完美的JS判断日期函数
    asp.net C# FileUpload 控件如何判断文件名的后缀
    c++中指针学习的两个绝好例子
    ASP.net性能优化总结
    C++指针
    JS中的undefined,null,"",0和false
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11442397.html
Copyright © 2020-2023  润新知