首页 > 编程语言 >STL heap 算法库 堆操作

STL heap 算法库 堆操作

时间:2024-08-13 20:05:36浏览次数:7  
标签:STL make 元素 pop 算法 参数 第三个 heap

算法库 -堆操作

基本操作

make_heap() (1)从一个元素范围创建出一个最大堆 (2)将区间内的元素转化为heap.--传比较器
push_heap() 对heap增加一个元素.将一个元素加入到一个最大堆
pop_heap() 对heap取出下一个元素.从最大堆中移除最大元素
sort_heap() 对heap转化为一个已排序群集.将一个最大堆变成一个按升序排序的元素范围

C++11新增特性

is_heap 检查给定范围是否为一个最大堆
is_heap_until 查找能成为最大堆的最大子范围,返回有效二叉堆的最末范围。如果都有效,则返回last.否则返回第一个非二叉堆结构元素的迭代器。

1.make_heap()

make_heap()用于把一个可迭代容器变成一个堆,默认是大顶堆。

它有三个参数。第一个参数是指向开始元素的迭代器,第二个参数是指向最末尾元素的迭代器,第三个参数是less<>()或是greater<>(),前者用于生成大顶堆,后者用于生成小顶堆,第三个参数默认情况下为less<>(),less()用于生成大顶堆。

要使用less(),以及greater(),请添加头文件#include ,且一定要加括号less<>()

2.pop_heap()

pop_heap()用于将堆的第零个元素与最后一个元素交换位置,然后针对前n - 1个元素调用make_heap()函数,它也有三个参数,参数意义与make_heap()相同,第三个参数应与make_heap时的第三个参数保持一致。

注意:pop_heap()函数,只是交换了两个数据的位置,如果需要弹出这个数据,需要在pop_heap()后加上

pop_back();

3.push_heap()

push_heap()用于把数据插入到堆中,它也有三个参数,其意义与make_heap()的相同,第三个参数应与make_heap时的第三个参数保持一致。

在使用push_heap()前,请确保数据存在于容器中

4.sort_heap()

sort_heap()是将堆进行排序,排序后,序列将失去堆的特性(子节点的键值总是小于或大于它的父节点)。它也具有三个参数,参数意义与make_heap()相同,第三个参数应与make_heap时的第三个参数保持一致。大顶堆sort_heap()后是一个递增序列,小顶堆是一个递减序列。

在使用这个函数前,需要确保序列符合堆的特性,否则会报错!

算法库 - cppreference.com

【C++】STL中heap函数的用法(make_heap,push_heap,pop_heap,sort_heap,is_heap,is_heap_until)_c++heap.pop()-CSDN博客

标签:STL,make,元素,pop,算法,参数,第三个,heap
From: https://www.cnblogs.com/DSCL-ing/p/18356672

相关文章

  • 小白怎样理解AI大模型与传统算法?
    面对当前的AI大模型技术大潮的冲击,任何事情不提一提AI大模型,都会觉得自己落伍了,被时代所抛弃了。那AI大模型与传统算法到底有什么不同,是否会完全取代传统技术?我们有一个形象的类比,可以帮助大家更容易理解。这个类比的对象就是中医和西医。首先,我们来看看AI大模型与传统算法......
  • ChatGPT 大模型核心算法深度分析 2024
    在分析核心算法之前,我们先了解chatGPT相关技术发展进程首先介绍自然语言处理、大规模预训练语言模型以及ChatGPT技术的发展历程,接着就ChatGPT的技术优点和不足进行分析,然后讨论核心算法。1.1自然语言处理的发展历史人类语言(又称自然语言)具有无处不在的歧义性、高度......
  • 【算法】求1+2+3+...+n
    1.概述地址:JZ64求1+2+3+…+n描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。数据范围:0<n≤2000<n\le2000<n......
  • 嵌入式软件--数据结构与算法 DAY 12
    数据结构和算法是程序的核心,虽然在嵌入式应用中很少会用到,但了解认知这种思维过程是非常有必要的。一个好的程序员应该把数据结构和算法看的比代码更重要。1.数据结构是什么?定义1(宏观):数据结构是为了高效访问数据而设计出的一种数据的组织和存储方式。定义2(微观):数据结构......
  • 嵌入式软件--数据结构与算法 DAY 13
    在嵌入式中,对算法的要求不高,但顺序查找和冒泡排序是经典算法,必须掌握。1.算法定义算法是一个用于解决特定问题的有限指令序列(计算机可以执行的操作)。通俗的理解就是可以解决特定问题的方法。2.时间复杂度时间复杂度不是执行完一段程序的总时间,而是描述为一个算法中基本操作......
  • ICP算法
    一、简介    迭代最近点算法(IteratedClosestPoints,ICP),顾名思义,就是采用迭代优化的思想以空间距离作为匹配点的选择依据,通过不断调整点云的位姿使得匹配点之间距离累计最小。假设有两组点云,其中一个目标点云A另一个为参考点云B,ICP算法的目的是为了算出一个最优的旋转......
  • 【SpringBoot+Vue】基于混合推荐算法的小说在线阅读平台
    【1】系统介绍随着互联网技术的发展和普及,网络文学已经成为人们日常生活中不可或缺的一部分。网络小说因其便捷的获取方式、丰富的题材选择以及个性化的阅读体验而受到广大读者的喜爱。然而,在海量的小说资源中,如何为每位读者提供高质量、个性化的阅读推荐,成为了在线阅读平......
  • 【C++ STL分配器】详细介绍
    C++中的分配器(Allocator)是用于抽象和管理内存分配与释放的机制,主要用于标准模板库(STL)容器。分配器的设计允许开发者自定义内存管理策略,从而优化性能、满足特殊需求或实现特定功能(如内存池、共享内存等)。本文将详细介绍C++分配器的概念、作用、自定义分配器的实现以及......
  • Java 100道算法
    数组相关查找数组中的最大和最小元素实现数组的反转查找数组中的第二大元素从数组中删除重复元素合并两个有序数组找到数组中和为指定值的两个数实现一个动态数组(ArrayList)找到数组中出现次数超过一半的元素寻找数组的连续子数组和为定值查找数组中的峰值元素字符串......
  • 人工智能算法,图像识别技术;基于大语言模型的跨境商品识别与问答系统;图像识别
    目录一.研究背景二,大语言模型介绍三,数据采集与预处理 商品识别算法四. 跨境商品问答系统设计五.需要源码联系一.研究背景 在当今全球化的背景下,跨境电商行业迅速发展,为消费者提供了更广泛的购物选择和更便利的购物方式。然而,随着跨境电商平台上商品种类的不断......