对make_heap(), pop_heap(), push_heap()的用法做个总结:
make_heap()生成堆,他有两个参数,也可以有三个参数,前两个参数是指向开始元素的迭代器和指向结束元素的下一个元素的迭代器。第三个参数是可选的,可以用伪函数less()和greater()来生成大顶堆和小顶堆,其中type为元素类型。如果只传入前两个参数,默认是生成大顶堆。
push_heap()是在堆的基础上进行数据的插入操作,参数与make_heap()相同,需要注意的是,只有make_heap()和push_heap()同为大顶堆或小顶堆,才能插入。
pop_heap()是在堆的基础上,弹出堆顶元素。这里需要注意的是,pop_heap()并没有删除元素,而是将堆顶元素和数组最后一个元素进行了替换,如果要删除这个元素,还需要对数组进行pop_back()操作。
若用make_heap(), pop_heap(), push_heap(),需要添加头文件 # include 。
用less ()和greater () 需要添加头文件 # include 。
这里只是描述用法,粘贴代码如下:

# include <iostream>
# include <functional>
# include <vector>
# include <algorithm>using namespace std;void printVec(vector<int> nums)
{for (int i = 0; i < nums.size(); ++i)cout << nums[i] << " ";cout << endl;
}
int main(void)
{int nums_temp[] = {8, 3, 4, 8, 9, 2, 3, 4};vector<int> nums(nums_temp, nums_temp + 8);cout << "sorce nums: ";printVec(nums);cout << "(默认)make_heap: ";make_heap(nums.begin(), nums.end());printVec(nums);cout << "(less)make_heap: ";make_heap(nums.begin(), nums.end(), less<int> ());printVec(nums);cout << "(greater)make_heap: ";make_heap(nums.begin(), nums.end(), greater<int> ());printVec(nums);cout << "此时,nums为小顶堆" << endl;;cout << "push_back(3)" << endl;nums.push_back(3);cout << "忽略第三个参数,即为默认)push_heap: ";push_heap(nums.begin(), nums.end());printVec(nums);cout << "第三个参数为greater: ";push_heap(nums.begin(), nums.end(), greater<int>());printVec(nums);cout << "(做替换)pop_heap: ";pop_heap(nums.begin(), nums.end());printVec(nums);cout << "pop_back(): ";nums.pop_back();printVec(nums);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

结果为:

这个是为了记录如何用堆,若有不对之处,敬请指正。。

转make_heap(), pop_heap(), push_heap()用法

make_heap 用法相关推荐

  1. make_heap(),push_heap(),pop_heap(),sort_heap()用法。

    #include <iostream> #include <algorithm> using namespace std;        //一般而言设计的时候都是从零开始的. ...

  2. stl make_heap_通过使用make_heap()创建堆| C ++ STL

    stl make_heap What is Heap Data structure? 什么是堆数据结构? Heap is a tree-based which is used for fast ret ...

  3. c++ 关于heap的STL用法

    c++ 关于heap的STL用法 #include <iostream> #include <vector> #include <algorithm> #inclu ...

  4. is_heap和is_heap_until 用法与源码剖析

    一:用法示例 is_heap一共两个重载: default (1) template <class RandomAccessIterator>   bool is_heap ( Rando ...

  5. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  6. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

  7. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  8. pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

  9. python yield 和 yield from用法总结

    #例1. 简单输出斐波那契數列前 N 个数 #缺点:该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列 #要提高 fab 函数的可复用性,最好不要直接打印出数列,而 ...

最新文章

  1. python_装饰器
  2. Java加密与解密的艺术~数字签名~模型分析
  3. QT每日一练day18:文件IO
  4. 最简便的Unity详细安装步骤及官网插件
  5. 软件工程--快速原型模型详解
  6. TensorFlow RunTime(TFRT) 小试
  7. leetcode1083. 销售分析 II(SQL必会呀)
  8. C++校招面试题合集
  9. 信通院 移动安全蓝皮书 数据安全管理案例 学习笔记
  10. 超大型生鲜配送软件源码
  11. 【黑灰产犯罪研究】Web应用攻击
  12. c++ value categories
  13. win10 t480耳机没有声音处理方法
  14. 一维数组的使用:逆序输出数据/:任意输入5个数据,存放于数组,编程实现将这5个数据逆序存放并输出
  15. 昆仑linux软件著作权,基于开源软件著作权
  16. java的微信公众号开发零(授权登陆,版本一)
  17. 如何使用JS实现图片幻灯片自动播放
  18. Android HTTPS请求总结
  19. <script>标签使用
  20. 单词分析(蓝桥云课)

热门文章

  1. linux百度网盘网络异常,Linux版本登录提示网络错误
  2. 【c语言】给出三角形的三边长,求三角形面积
  3. MATLAB 人口增长预测
  4. Android常用学习网站
  5. Python进阶-----面对对象4.0(面对对象三大特征之--继承)
  6. 浙江一女子被集中隔离,到达酒店乐开花:竟是千岛湖高级度假酒店
  7. Scrapy爬取豆瓣图书Top250数据,在PowerBI中可视化分析
  8. sqlserver创建表命令create table
  9. 关于windows11新装系统界面无法登录微软账号的问题
  10. 虚拟桌面登录报错:为此桌面分配的桌面源当前不可用