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

一般网站用什么数据库游戏源码搭建

一般网站用什么数据库,游戏源码搭建,英文网站建设口碑好,镇江百度送网站文章目录 priority_queuepriority_queue 使用priority_queue的模拟实现向上调整算法向下调整算法pushpoptopsizeempty 仿函数完整代码 priority_queue 优先队列#xff08;priority_queue#xff09;也是队列的一种#xff0c;priority_queue的接口是和queue的接口是相同的… 文章目录 priority_queuepriority_queue 使用priority_queue的模拟实现向上调整算法向下调整算法pushpoptopsizeempty 仿函数完整代码 priority_queue 优先队列priority_queue也是队列的一种priority_queue的接口是和queue的接口是相同的。所以两者的使用语法也是相同的。我们直接看优先队列priority——queue的底层实现原理。 默认情况下priority_queue是大堆。 priority_queue 使用 //用vector作为底层容器内部构造大堆结构。 priority_queueint, vectorint, lessint q1; //用vector作为底层容器内部构造小堆结构。 priority_queueint, vectorint, greaterint q2; //不指定底层容器和内部需要构造的堆结构。 priority_queueint q3;#include iostream #include functional #include queue using namespace std; int main() {priority_queueint q;q.push(3);q.push(6);q.push(0);q.push(2);q.push(9);q.push(8);q.push(1);while (!q.empty()){cout q.top() ;q.pop();}cout endl; //9 8 6 3 2 1 0return 0; } priority_queue的模拟实现 priority_queue的底层实际上就是堆模拟实现priority_queue之前需要知道向下调整和向上调整算法。下面这两种算法我们均以大堆为例 向上调整算法 向上调整算法的前提 若想将其调整为小堆那么根结点的左右子树必须都为小堆。  若想将其调整为大堆那么根结点的左右子树必须都为大堆 向堆中插入数据需要使用到向上调整算法 先将元素插入到堆的末尾,即最后一个孩子之后从插入节点位置开始和父节点比较我们以大堆为例如果目标结点的值比父结点的值大则交换目标结点与其父结点的位置并将原目标节点的父节点当作新的目标节点继续向上调整调整到根节点结束此时该树已经是大堆了 图中是以小堆为例 向下调整算法 向下调整算法的前提 若想将其调整为小堆那么根结点的左右子树必须都为小堆。  若想将其调整为大堆那么根结点的左右子树必须都为大堆   从根节点开始选出左右孩子值较大的节点让值较大的节点与父节点的值进行比较如果值较大的节点比父节点的值小交换两者位置将原来值较大的孩子节点作为父节点继续向下调整调整到叶子节点结束 图中是以小堆为例 push void push(const T x){_con.push_back(x);AdjustUp(_con.size() - 1);}pop void pop(){swap(_con[0], _con[_con.size() - 1]);_con.pop_back();AdjustDown(0);}top const T top(){return _con[0];}size bool size(){return _con.size();} empty bool empty(){return _con.empty();}仿函数 using namespace std; //仿函数 /函数对象 template class T class Less { public:bool operator() (const T x, const T y){return x y;} };int main() {Lessint lessfunc;bool result lessfunc(6, 2);//仿函数//bool result lessfunc.operator()(6, 2);cout boolalpha result endl;return 0; }完整代码 #pragma once #includevector #includefunctional using namespace std;//仿函数 /函数对象 template class T class Less { public:bool operator() (const T x, const T y){return x y;} }; template class T class Greater { public:bool operator() (const T x, const T y){return x y;} };namespace cxq {templateclass T, class Container vectorT, class Compare LessT class priority_queue{private:void AdjustDown(int parent)//从根节点开始{Compare com;//仿函数int child parent * 2 1;while (child _con.size()){//假设默认左孩子大于右孩子// if (child 1 _con.size() _con[child 1] _con[child])//右孩子要存在防止越界if (child 1 _con.size() com(_con[child 1], _con[child])){child;}//if (_con[child] _con[parent])if (com(_con[parent], _con[child])){swap(_con[child], _con[parent]);int parent child;child parent * 2 1;}else{break;}}}void AdjustUp(int child){Compare com;//仿函数int parent (child - 1) / 2;//大堆while (child 0){//if (_con[child] _con[parent])if (com(_con[parent], _con[child])){swap(_con[child], _con[parent]);int child parent;parent (child - 1) / 2;}else{break;}}}public://默认构造priority_queue(){}templateclass InputIterator//构造函数priority_queue(InputIterator first, InputIterator last){while (first ! last){_con.push_back(*first);first;}//建堆//最后一个非叶子节点for (size_t i (_con.size() - 1 - 1) / 2; i 0; i){AdjustDown(i);}}void pop(){swap(_con[0], _con[_con.size() - 1]);_con.pop_back();AdjustDown(0);}void push(const T x){_con.push_back(x);AdjustUp(_con.size() - 1);}const T top(){return _con[0];}bool empty(){return _con.empty();}bool size(){return _con.size();}private:Container _con;};void test_priority_queue1(){//默认是大堆--less//priority_queueint pq;priority_queueint, vectorint, Greaterint pq;//小堆pq.push(3);pq.push(5);pq.push(1);pq.push(4);while (!pq.empty()){cout pq.top() ;pq.pop();}cout endl;}class Date{public:Date(int year 1900, int month 1, int day 1): _year(year), _month(month), _day(day){}bool operator(const Date d)const{return (_year d._year) ||(_year d._year _month d._month) ||(_year d._year _month d._month _day d._day);}bool operator(const Date d)const{return (_year d._year) ||(_year d._year _month d._month) ||(_year d._year _month d._month _day d._day);}friend ostream operator(ostream _cout, const Date d);//声明private:int _year;int _month;int _day;};ostream operator(ostream _cout, const Date d){_cout d._year - d._month - d._day;return _cout;}struct LessPDate{//仿函数bool operator() ( const Date * p1 , const Date* p2){return *p1 *p2;}};void test_priority_queue2(){//priority_queueDate pq;//pq.push(Date(2023, 7, 20));//pq.push(Date(2023, 6, 20));//pq.push(Date(2023, 8, 20));//while (!pq.empty())//{// cout pq.top() ;// pq.pop();//}//cout endl;priority_queueDate*, vectorDate*, LessPDate pq;pq.push(new Date(2023, 7, 20));pq.push(new Date(2023, 6, 20));pq.push(new Date(2023, 8, 20));while (!pq.empty()){cout *pq.top() ;pq.pop();}cout endl;}}
http://www.zqtcl.cn/news/313241/

相关文章:

  • 做国外搞笑网站上海建设工程网站
  • 泰州免费网站建站模板网站建设用python怎么样
  • 优秀作文网站都有哪些企业网站的开发与应用
  • 织梦做网站被告如何再工商局网站做设备抵押
  • 什么是自适应网站怎么做国际购物网站
  • 促销活动推广文案网站加alt属性对优化有影响吗
  • 平湖网站改版洛卡博网站谁做的
  • 买卖平台有哪些网站三航奔腾建设有限公司官方网站
  • 网站建设的企业wordpress teamtalk
  • 公司起名字大全免费查询网站的哪些标签需要优化
  • 装修公司手机网站模板网络营销品牌有哪些
  • 如何保证网站安全在线的crm系统软件
  • 网站名称与主体性质不符wordpress首页锚点
  • 有口碑的常州网站建设传统网站建设
  • 大学网站建设排名金乡网站建设
  • 手机网站开发步骤徐州网站制作怎么做
  • 南通网站优化找哪家推荐做素菜的网站
  • 中国十大网站域名界面设计最好的网站
  • 苍山做网站北京便宜网站建设
  • 广州公司网站制作招聘信息汕头网站推广哪家好
  • 登录建设官方网站品牌营销专家
  • 天津模板建站哪家好wordpress标题换行显示不全
  • 杭州房地产网站建设网站建设开发公司推荐指数
  • 建设部网站上怎样查询企业业绩做淘宝联盟网站要多少钱
  • 宣武上海网站建设网站导购话术
  • 天津北京网站建设公司大网站建设公司
  • 网站需要在哪些方面备案百度云建网站
  • 西安手机网站定制网站建设西安网站注册
  • 怎么做秒赞网站企业自己建设的营销网络
  • 一般网站建设需求有哪些wordpress脚注更改