【数据结构】模拟实现priority_queue

namespace my_priority_queue
{//  仿函数/函数对象template<class T>struct greater{bool operator()(const T& x, const T& y){return x > y;}};template<class T>struct less{bool operator()(const T& x, const T& y){return x < y;}};//为了代码简洁与复用,我们为了满足大堆小堆两种需求,所以需要模板传递仿函数(函数对象);template <class T,class container = vector<T>,class compare = less<T>>//利用模板参数,模糊接收仿函数类,less也可以,greater也可以;class priority_queue{void Adjustup(int child){	int parent = (child - 1) / 2;compare _com;//仿函数对象while (child>0){//此处就是大堆需要用小于的原因,是父节点与子节点比较,如果父节点小于子节点就交换,自然是大堆;if (_com(_con[parent],_con[child])){swap(_con[parent],_con[child]);child = parent;parent = (child - 1) / 2;}else//已经满足一个堆了,退出循环;{break;}}}void AdjustDown(int parent){int child = parent * 2 + 1;compare _com;//仿函数对象while (child<_con.size()){//如果右孩子符合建堆思路(根据需要建大堆还是小堆);if(child+1<_con.size()&&_com(_con[child], _con[child+1])){child = child+1;}if (_com(_con[parent], _con[child])){swap(_con[parent], _con[child]);parent=child;child *= 2; }else {break;}}}public:void push(const T& val){_con.push_back(val);Adjustup(_con.size()-1);//传下标}void pop(){swap(_con[0],_con[_con.size()-1]);_con.pop_back();AdjustDown(0);}size_t size(){return _con.size();}const T& top(){return _con[0];}bool empty(){return _con.empty();}private:container _con;};void test_func1(){//priority_queue<int> pq;priority_queue<int,vector<int>,greater<int>> pq;pq.push(1);pq.push(2);pq.push(3);pq.push(4);pq.push(5);while (!pq.empty()){cout << pq.top() << " ";pq.pop();}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/124029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 常见的问题以及解决办法

当开发UniApp时&#xff0c;可能会遇到一些常见问题。以下是一些常见问题及其解决办法&#xff1a; 1. 页面或组件无法正常显示 确保页面或组件的路径和文件名的大小写正确。检查模板代码中是否存在错误或不完整的标签闭合。使用调试工具&#xff08;如Chrome开发者工具&…

ue5 右击.uproject generator vs project file 错误

出现如下错误 Unable to find valid 14.31.31103 C toolchain for VisualStudio2022 x64 就算你升级了你的 vs installer 也不好使 那是因为 在C:\Users\{YourUserName}\AppData\Roaming\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml 这个缓存配置文件中写死了 14…

乌兹别克斯坦公司如何注册 乌兹别克斯坦公司年审 乌兹别克斯坦公司注册流程

注册乌兹别克斯坦公司优势&#xff1a; 1、政 府进行了一系列经济和商业改 革&#xff0c;以推动国内外投资。努力提高商业环境的透明度和效率。 2、 乌兹别克斯坦是“一 带 一路”倡议的重要一环&#xff0c;这为公司在区域范围内的贸易和合作提供了机遇。 3、工业和农业方…

leetcode-链表

链表是一个用指针串联起来的线性结构&#xff0c;每个结点由数据域和指针域构成&#xff0c;指针域存放的是指向下一个节点的指针&#xff0c;最后一个节点指向NULL&#xff0c;第一个结点称为头节点head。 常见的链表有单链表、双向链表、循环链表。双向链表就是多了一个pre指…

​轻量应用服务器有什么优势?如何评价亚马逊云科技轻量应用服务器?

什么是轻量应用服务器&#xff1f; 随着如今各行各业对云计算的需求越来越多&#xff0c;云服务器也被越来越多的企业所广泛采用。其中&#xff0c;轻量应用服务器是一种简单、高效、可靠的云计算服务&#xff0c;能够为开发人员、企业和个人提供轻量级的虚拟专用服务器&#…

AWTK 液体流动效果控件发布

液体流动效果控件。 主要特色&#xff1a; 支持水平和垂直方向。支持正向和反向流动。支持设置头尾的图片。支持设置流动的图片。支持设置速度的快慢。支持启停操作。 准备 获取 awtk 并编译 git clone https://github.com/zlgopen/awtk.git cd awtk; scons; cd -运行 生成…

JMeter简单使用

JMeter是一个功能强大的开源性能测试工具&#xff0c;用于对各种应用程序、协议和服务器进行性能和负载测试。它被广泛用于测试Web应用程序的性能&#xff0c;并可以模拟多种负载条件和行为。 JMeter使用 添加线程组 设置线程组的配置 设置请求 配置请求 添加监听器 查看压…

JVM虚拟机:Java对象的头信息有什么?

本文重点 在前面的课程中,我们学习了对象头,其中对象头包含Mark Word和class pointer,当然数组还会有一个数组长度。本文主要分析Mark Work中包含的信息。 Mark Word 以下两张图是一个意思: 32位 32位 64位 以上就是Mark Word会存储的信息,这个意思是说Java对象在不同…

计网小题题库整理第一轮(面向期末基础)(2)

该系列第二期&#xff0c;第一期链接在这~ 计网小题题库整理第一轮&#xff08;面向期末基础&#xff09;&#xff08;1&#xff09;https://blog.csdn.net/jsl123x/article/details/134030486?spm1001.2014.3001.5501 一.选择题 1、Internet的前身是 &#xff08;C &#x…

2015年亚太杯APMCM数学建模大赛B题城市公共交通服务水平动态评价模型求解全过程文档及程序

2015年亚太杯APMCM数学建模大赛 B题 城市公共交通服务水平动态评价模型 原题再现 城市公共交通服务评价是城市公共交通系统建设和提高公共交通运营效率的重要组成部分。对于公交企业&#xff0c;管理和规划部门&#xff0c;传统公交车站、线路和换乘枢纽的规划数据只是基于主…

【MySQL索引与优化篇】InnoDB数据存储结构

文章目录 1. 数据库的存储结构:页1.1 磁盘与内存交互基本单位:页1.2 页结构概述1.3 页的上层结构 2. 页的内部结构3. InnoDB行格式(或记录格式)3.1 Compact行格式3.2 Dynamic和Compressed行格式3.3 Redundant行格式 4. 区、段与碎片区4.1 为什么要有区&#xff1f;4.2 为什么要…

Ortec974A EPICS IOC程序

1&#xff09; 创建一个用户存放这个IOC程序结构的目录&#xff1a; rootorangepi4-lts:/usr/local/EPICS/program# mkdir ortec974A rootorangepi4-lts:/usr/local/EPICS/program# cd ortec974A/ rootorangepi4-lts:/usr/local/EPICS/program/ortec974A# ls2&#xff09;使用…

Java中的队列:各种类型及使用场景

在Java中&#xff0c;队列是一种重要的数据结构&#xff0c;用于存储按特定顺序排列的元素。队列在多线程环境中特别有用&#xff0c;因为它们可以用来解决并发问题。在Java中&#xff0c;队列主要分为以下几种类型&#xff1a; 接口&#xff1a; Queue: 这是Java Queue接口&…

mediapipe 训练自有图像数据分类

参考&#xff1a; https://developers.google.com/mediapipe/solutions/customization/image_classifier https://colab.research.google.com/github/googlesamples/mediapipe/blob/main/examples/customization/image_classifier.ipynb#scrollToplvO-YmcQn5g 安装&#xff1a…

CSS中的栅格布局

CSS中的栅格布局 在写前端项目的时候&#xff0c;我之前一直习惯使用flex布局&#xff0c;flex布局写起来比较随心&#xff0c;几乎可以实现任意形式的页面布局。不过自从B占看到某位大佬的grid布局后&#xff0c;发现布局居然还可以这么玩&#xff0c;正好自己在写一个vue3的…

(vue)el-form表单隐藏校验星号

(vue)el-form表单隐藏校验星号 写法&#xff1a; <el-form:model"ruleForm" :rules"rules" ref"ruleForm":hide-required-asterisk"true" //隐藏星号... >

【数据结构】模拟实现Vecotr

namespace my_vector {template <class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;//常量指针&#xff0c;指针指向的值不可以变&#xff1b;//构造函数vector():start(nullptr),finish(nullptr),end_of_storage(nullptr){}//析构函数…

【大数据Hive】hive 表数据优化使用详解

目录 一、前言 二、hive 常用数据存储格式 2.1 文件格式-TextFile 2.1.1 操作演示 2.2 文件格式 - SequenceFile 2.2.1 操作演示 2.3 文件格式 -Parquet 2.3.1 Parquet简介 2.3.2 操作演示 2.4 文件格式-ORC 2.4.1 ORC介绍 2.4.2 操作演示 三、hive 存储数据压缩优…

大数据之LibrA数据库常见术语(十)

xlog 表示事务日志&#xff0c;一个逻辑节点中只有一个&#xff0c;不允许创建多个xlog文件。 系统表 存储数据库元信息的表&#xff0c;元信息包括数据库中的用户表、索引、列、函数和数据类型等。 压缩 数据压缩&#xff0c;信源编码&#xff0c;或比特率降低涉及使用相比…

Differences between Income Statement and Tax Return

转载请注明出处&#xff1a;http://blog.csdn.net/dongdong9223/article/details/134120122 本文出自【我是干勾鱼的博客】 Some different information between Income Statement and Tax Return: Income StatementTax ReturnRevenueTaxable revenueExpense-Deductible Expen…