源码制作网站广州白云区最新新闻

web/2025/9/27 8:48:01/文章来源:
源码制作网站,广州白云区最新新闻,深圳市住建设局网站首页,免费网站模板priority_queue模拟实现 1. priority_queue介绍2. priority_queue使用2.1 priority_queue显示定义2.2priority_queue接口使用 3. 仿函数4. priority_queue模拟实现4.1 向上调整算法4.2 向下调整算法4.3 实现priority_queue的接口4.4 使用[仿函数](https://legacy.cplusplus.com… priority_queue模拟实现 1. priority_queue介绍2. priority_queue使用2.1 priority_queue显示定义2.2priority_queue接口使用 3. 仿函数4. priority_queue模拟实现4.1 向上调整算法4.2 向下调整算法4.3 实现priority_queue的接口4.4 使用[仿函数](https://legacy.cplusplus.com/reference/functional/less/?kwless)控制[priority_queue](https://legacy.cplusplus.com/reference/queue/priority_queue/?kwpriority_queue)默认大小堆4.5 priority_queue模拟实现代码 1. priority_queue介绍 优先级队列是一种容器适配器优先级队列默认使用vector作为其底层存储数据的容器在vector上又使用了堆算法将vector中元素构造成堆的结构因此priority_queue就是堆所有需要用到堆的位置都可以考虑使用priority_queue。 注意默认情况下priority_queue是大堆。 2. priority_queue使用 2.1 priority_queue显示定义 priority_queue默认vector作为容器默认情况下为大堆。 //默认 priority_queueint p1; //显示为大堆 priority_queueint, vectorint, lessint p2;若是容器为vector结构为小堆 priority_queueint, vectorint, greaterint p3;2.2priority_queue接口使用 成员函数说明push往优先级队列中尾插数据pop删除堆顶元素top获取堆顶元素empty判断优先级队列是否为空size获取优先级队列的元素个数 示例 void test() {priority_queueint pq;pq.push(1);pq.push(3);pq.push(4);pq.push(5);pq.push(2);pq.push(6);pq.push(7);while (!pq.empty()){cout pq.top() ;pq.pop();}cout endl; }3. 仿函数 在我们模拟实现priority_queue前还需要了解仿函数。 仿函数(functor)就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator()这个类就有了类似函数的行为就是一个仿函数类了。 示例 struct Less {bool operator()(const int val1, const int val2){return val1 val2;}};int main() {Less lessfunc;cout lessfunc(1, 2) endl;cout lessfunc.operator()(1, 2) endl;//显示调用cout Less()(1, 2) endl;//匿名对象return 0; }4. priority_queue模拟实现 priority_queue底层默认为堆所以我们需要清楚向上调整算法和向下调整算法这里以大堆例。 4.1 向上调整算法 堆的向上调整算法思想大堆 目标结点与父结点相比较如果目标结点大于父结点目标结点就与父结点交换位置后用当前新的位置作为目标结点继续向上调整。如果目标结点小于父结点则停止向上调整。此时堆为大堆。 例子 我们往堆中插入数据89 与父结点相比较大于父结点就交换继续向上调整。 数据89大于88交换。 直到符合条件为止。 代码 void adjust_up(size_t child) {size_t parent (child - 1) / 2;while (child 0){if (c[child]c[parent]){swap(c[child], c[parent]);child parent;parent (child - 1) / 2;}else{break;}} }4.2 向下调整算法 堆的向下调整算法思想大堆 目标结点与子结点比较若是子结点大于目标结点则与子结点交换位置。用当前新的位置作为目标结点继续向下调整。若是子结点小于目标结点则停止向下调整此时堆为大堆。 示例 此时堆的左右子树都为大堆因此我们可以将父结点向下调整。 判断子节点与当前位置数据的大小大于则交换位置。 继续判断向下调整。 直到符合目标结点大于子结点为止此时堆为大堆。 代码 void adjust_down(size_t parent) {size_t child parent * 2 1;while (child c.size()){//检查左结点是否大于右结点if (child 1 c.size() c[child1]c[child]){child;}if (c[child]c[parent]){swap(c[child], c[parent]);parent child;child parent * 2 1;}else{break;}} }4.3 实现priority_queue的接口 bool empty() const{return c.empty();}size_t size() const{return c.size();}const T top() {return c[0];}void push(const T x){c.push_back(x);adjust_up(c.size()-1);}void pop(){swap(c[0], c[size() - 1]);c.pop_back();adjust_down(0);}4.4 使用仿函数控制priority_queue默认大小堆 我们通过查阅文档可以发现c通过改变仿函数对priority_queue队列的默认大小堆的控制。 优势 相比于函数指针仿函数更加方便简单更加利于控制只需要跟换默认的仿函数。 4.5 priority_queue模拟实现代码 namespace bit {template class Tstruct less{bool operator()(const T val1,const T val2){return val1 val2;}};template class Tstruct greater{bool operator()(const T val1, const T val2){return val1 val2;}};template class T, class Container vectorT, class Compare lessT //这里默认容器是vector 因为要把优先级队列看成一个大堆堆的物理结构是有序结构。class priority_queue{public:void adjust_up(size_t child){Compare com;size_t parent (child - 1) / 2;while (child 0){if (com(c[parent],c[child])){swap(c[child], c[parent]);child parent;parent (child - 1) / 2;}else{break;}}}void adjust_down(size_t parent){size_t child parent * 2 1;while (child c.size()){Compare com;if (child 1 c.size() com(c[child],c[child1])){child;}if (com(c[parent], c[child])){swap(c[child], c[parent]);parent child;child parent * 2 1;}else{break;}}}bool empty() const{return c.empty();}size_t size() const{return c.size();}const T top() {return c[0];}void push(const T x){c.push_back(x);adjust_up(c.size()-1);}void pop(){swap(c[0], c[size() - 1]);c.pop_back();adjust_down(0);}private:Container c;Compare comp;}; };

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

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

相关文章

营销软件站放单网站

Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。Glance提供Restful API可以查询虚拟机镜像的me…

保定模板建站平台如何去除痘痘有效果

cognito在本文中,我们将研究使用OAuth协议通过Amazon Cognito对单页应用程序(使用Vue.js构建)进行身份验证。 在上一篇文章中,我们将服务器端应用程序与Amazon Cognito集成在一起。 搭建单页应用程序 我们将使用vue-cli创建一个空…

专做健身餐的网站wordpress 说说碎语

每日OJ —— 144. 二叉树的前序遍历 1.题目:144. 二叉树的前序遍历2.方法讲解2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:144. 二叉树的前序遍历 2.方法讲解 2.1.算法讲解 1.首先如果在每次每个节点遍历的时候都去为数组开辟空间,这样…

网站建设从哪入手免费word在线编辑

一、创建vue项目步骤 要创建一个Vue Element UI的项目,你可以按照以下步骤进行操作: 1.确保你已经安装了Node.js和npm(Node.js的包管理器)。你可以在命令行中运行以下命令来检查它们是否已经安装: node -vnpm -v2.使…

中国十大网站排名wordpress is admin

目标 我们学习正则化之前应该先了解我们为什么要用正则化 。正则化解决了什么问题 。我们讲正则化之前 ,先了解一个概念–》过拟合 过拟合 数据增强 L1和L2正则化 Dropout 注意:Dropout是不适合用在卷积神经网络的 提前终止 一般的做法是:记…

网站技术可行性网站怎么做数据转移

北京电子科技学院(BESTI) 实 验 报 告 封 面 课程:信息安全系统设计基础 班级:1452 姓名: 黄亚奇 祁玮 学号: 20145222 20145213 成绩: 指导教师:娄嘉鹏 实验日期:2016.1…

做的好的农产品网站微企点做的网站怎么去底下的

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

微信网站是多少钱一年wordpress书签插件

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 【翻译】再见, Clean Code!正文那是一个深夜次日早晨这只是一个阶段 【翻译】再见…

天津外贸营销型网站建设怎样做酒店网站ppt

作者:fyupeng 技术专栏:☞ https://github.com/fyupeng 项目地址:☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 一、介绍 当由于某个业务id发生死循环一直在运行,那么再来一笔相同的业务id执行相同操作&…

汇款账号 网站建设如何让百度收录网站

记录一下成长的历程吧! 刚开始写,没什么文笔,也没什么技术含量,可能主要的是纪录一下平常工作学习中遇到的问题,以及解决的办法吧。或者只有问题,没有解决办法。 前两天项目中遇到的一个问题,由…

广州网站优化服务商整站seo优化推广

引入;发送文件前要准备的工作 分层的基本原则 分层结构中相关的概念 PCISDUPDU 上一层的PDU作为传给下一层的SDU,传输下去 总结

网站建设商城模板培训班设计

作者:Martin Fowler译者:冬哥原文:https://martinfowler.com/articles/remote-or-co-located.html远程工作与同地工作之间不是简单的二分法,相反,团队有多种分布模式,每种模式都有不同的权衡和适合的有效技…

手机参数查询网站宁波网站优化价格

【问题分析】实际工作中,我们经常需要进行统计分析,如统计甘肃省各个地区界内的河流、公路、铁路等的总长度,统计各个地区界内总人口、作物产量、村镇分布等等。ArcGIS提供了强大的空间统计功能,可以一次性操作完成所有操作,省时省力,大大提高了工作效率,减少了错误的发…

宝安做网站的公司网站建设的体会

文章目录1. 题目2. 解题2.1 超时解2.1 改进计算方法1. 题目 假设你设计一个游戏,用一个 m 行 n 列的 2D 网格来存储你的游戏地图。 起始的时候,每个格子的地形都被默认标记为「水」。 我们可以通过使用 addLand 进行操作,将位置 (row, col)…

龙川县建设网站临沂做网站首选

转载自 稍微有点难度的10道java面试题,你会几道? 1、jvm对频繁调用的方法做了哪些优化? 2、常见的攻击手段有哪些?如何防范? 3、restful api有哪些设计原则? 4、hessian是做什么用的?它的…

绍兴网站建设设计制作校园文化设计公司公司排名

70 爬楼梯 (进阶) 爬楼梯问题在我们刚开始学习动态规划的时候作为入门的问题。当时题目考虑的是1或2种走法。如果将能走的台阶设为M,则能产生进阶的题目。通过求解完全背包问题得到。 题目如下: 题目页面 如果最多能走m个台阶&#xff0c…

怎么找到网站站长莱芜百度网站优化

基于Java中的SSM框架实现快餐店线上点餐系统演示 摘要 随着计算机互联网的高速发展。餐饮业的发展也加入了电子商务团队。各种网上点餐系统纷纷涌现,不仅增加了商户的销售量和营业额,而且为买家提供了极大的方便,足不出户,就能订…

昆明网站seo公司seo 网站关键词优化

基于Grad-CAM与KL损失的SSD目标检测算法 人工智能技术与咨询 来源:《电子学报》,作者侯庆山等 摘 要: 鉴于Single Shot Multibox Detector (SSD)算法对中小目标检测时会出现漏检甚至错检的情况,提出一种改进的SSD目标检测算法&…

软装设计案例网站wordpress仪表盘修改

作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题。 【出现频率】 【关键考点】 MVC的含义MVC的结构 【考题分析】  在java Web开发中,存在两…

男人做想看的免费网站杭州企业网站建设 哪里好

一 Web应用模式 在开发Web应用中,有两种应用模式: 1.1 前后端不分离 1.2 前后端分离 二 API接口 为了在团队内部形成共识、防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写…