当前位置: 首页 > wzjs >正文

彩票网站开发需要多少钱企业培训

彩票网站开发需要多少钱,企业培训,wordpress 首页url,可靠的扬中网站建设目录 前言基本结构如何设置默认大小堆底层实现仿函数的使用向上调整算法向下调整算法其他接口 end 前言 priority_queue的介绍 优先级队列默认使用vector作为其底层存储数据的容器,在vector上又使用了堆算法将vector中的元素构造成堆的结构,因此priorit…

目录

  • 前言
  • 基本结构
  • 如何设置默认大小堆
  • 底层实现
    • 仿函数的使用
    • 向上调整算法
    • 向下调整算法
    • 其他接口
  • end

前言

priority_queue的介绍
优先级队列默认使用vector作为其底层存储数据的容器,在vector上又使用了堆算法将vector中的元素构造成堆的结构,因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用priority_queue。

注意: 默认情况下priority_queue是大堆。

基本结构

关于优先级队列实际上就是一个堆,堆分为大根堆和小根堆
在这里插入图片描述

  • 这里列举大根堆

关于堆这个数据结构我在【手撕数据结构】二叉树和堆这篇文章里已经详细讲解过,如果还不了解的可以去看看这篇文章

如何设置默认大小堆

这里我们提出一个叫仿函数的概念:
看看库里面的priority_queue

在这里插入图片描述

  • 其实仿函数就是一个类,和容器适配器差不多,仿函数仿在哪里,我们知道函数调用都是通过()来标记这是一个函数,所以这个类里面就重载了()运算符
    在这里插入图片描述

注意:
1.提供Greater(大于)是小根堆
2.提供Less(小于) 是大根堆

底层实现

仿函数的使用

	template<class T, class Contain = vector<T>, class Compare = Less<T>>class Priority_queue{Compare com; 
  • 定义一个仿函数对象com
if (child + 1 < _con.size() && com(_con[child], _con[child + 1]))- 这里就是使用对象的运算符重载()达到大小相比

向上调整算法

  • 这个原理我也在以前的文章中讲过,这里就不再详细讲解了,请往上面的链接去看
void AdjustUp(int child)
{int parent = (child - 1) / 2;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 = 2 * parent + 1;while (child < _con.size()){if (child + 1 < _con.size() && com(_con[child], _con[child + 1])){child++;}if (com(_con[parent], _con[child])){swap(_con[parent], _con[child]);parent = child;child = 2 * parent + 1;}else{break;}}}

其他接口

		void push(const T& x){_con.push_back(x);AdjustUp(_con.size() - 1);}void pop(){swap(_con[0], _con[_con.size() - 1]);_con.pop_back();AdjustDown(0);}const T& top(){return _con[0];}bool empty(){return _con.empty();}int size(){return _con.size();}
  • 根据复用vector这个容器适配器接口就行, pop是堆的删除所以是删除堆顶,然后重新调整堆的特征结构
  • 插入从最后插入,也是要调整结构。
  • 具体原理图解看以前的文章,前面我已经给了链接。

end

感谢大家的阅读,希望对你们有帮助

http://www.dtcms.com/wzjs/108418.html

相关文章:

  • 做网站流程视频seo技术员
  • 跟我一起做网站营销方案怎么写模板
  • asp.net做学校网站首页新冠咳嗽一般要咳多少天
  • 哪里可以学做资料员的网站如何找到网络公关公司
  • app制作需要哪些技术谷歌优化培训
  • 怎么进行网站设计和改版seo优化工具大全
  • 电子商务网站开发与建设网络推广怎么做好
  • 新手制作网站seo优化网站模板
  • 做智能网站系统下载软件点击器 百度网盘
  • 西安做义工网站网页优化建议
  • 怀远网站建设百度高级搜索网址
  • 阿里巴巴 商城网站怎么做我想做电商怎么加入
  • 上海网站设计见建设百度推广退款投诉
  • 网页设计代码放图片杭州seo外包服务
  • 替别人做网站宜昌网站建设公司
  • 女生做网站编辑好还是seo分析是什么意思
  • 如何建设国际网站设计网络营销方案
  • 做电影网站的流程互联网行业最新资讯
  • 蓝天网站建设产品推广策划书
  • 网站建设要学哪些软件有哪些内容百度免费咨询
  • wordpress火车头发布登陆失败免费seo工具汇总
  • 淄博网站推广淘宝app官方下载
  • 做外贸产品上什么网站直播回放老卡怎么回事
  • 哪个网站做的win10系统好新手学seo
  • java的大型网站建设腾讯朋友圈广告怎么投放
  • 免费做流程图的网站网络推广渠道都有哪些
  • 为企业做网站策划案电商seo是指
  • 仙桃做网站的个人注册域名要钱吗
  • wordpress 邮箱登录插件百度seo咋做
  • 网站制作 广州天天外链