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

普集网站制作网易企业邮箱收费吗

普集网站制作,网易企业邮箱收费吗,东莞搜狗推广,怎么提高网站的收录量前言#xff1a;这篇文章我们继续来分享一个c的容器——优先级队列。 一.理解优先级 何为优先级一说#xff1f;实际上就是有顺序的意思。 优先级队列#xff0c;即有顺序的队列#xff0c;是一个无需我们自己进行排序操作#xff0c;在数据传入时就会由容器自己排好序的…前言这篇文章我们继续来分享一个c的容器——优先级队列。 一.理解优先级 何为优先级一说实际上就是有顺序的意思。 优先级队列即有顺序的队列是一个无需我们自己进行排序操作在数据传入时就会由容器自己排好序的队列。 先来看实例 使用该队列同样需要包含头文件#includequeue。 在默认情况下优先级队列是按照从大到小排序的而在数据结构中也有一个能够自主排序没错就是堆。从大到小的顺序也就是大堆。 那么如果想要实现小堆又该怎么办呢只需要增加一下模版参数 至于为什么这样写就是小堆我们再接下来的模拟实现中进行解答。 二.基本框架 堆可以通过父节点或字节点的下标来互相找到对方的下标所以一般情况都以数组为模板。  template class T,class Container vectorTclass priority_queue{public://向上调整void adjust_up(size_t child){int parent (child - 1) / 2;while (child 0){if (_con[child] _con[parent]){swap(_con[child], _con[parent]);child parent;int parent (child - 1) / 2;}else{break;}}}//向下调整void adjust_down(size_t parent){size_t child parent * 2 1;while (child _con.size()){if (child 1 _con.size() _con[child 1] _con[child]){child;}if (_con[child] _con[parent]){swap(_con[child], _con[parent]);parent child;child parent * 2 1;}else{break;}}}//插入void push(const T x){_con.push_back(x);adjust_up(_con.size() - 1);}//删除void pop(){swap(_con[_con.size() - 1], _con[0]);_con.pop_back();adjust_down(0);}//队头元素T top(){return _con[0];}//数据个数size_t size(){return _con.size();}//判空bool empty(){return _con.empty();}private:Container _con;}; 这里我们直接给出优先级队列的基本常规操作本质就是堆的各种操作不再一一分享。 而我们要重点分享的就是如何切换升降序。 三.仿函数 从名字就能看出这是一个可以冒充函数的家伙先来看例子 template class T class less { public:bool operator()(const T x, const T y){return x y;} }; 这段代码不难理解在一个类中声明了一个运算符重载函数这个函数能够进行大小比较。  再来看这段代码能够发现我们能够直接通过一个对象来进行两个数据之间的比较。  这就是所谓的仿函数。  上述仿函数是进行“小于”比较同样我们也可以在创造一个仿函数来进行“大于”比较。 如此一来我们便可以通过类模板将这两个仿函数用于排序比较。 四.实现可选优先级 直接看代码 //小于比较template class Tclass less{public:bool operator()(const T x, const T y){return x y;}};//大于比较template class Tclass greater{public:bool operator()(const T x, const T y){return x y;}};template class T,class Container vectorT,class compare lessT//注意class priority_queue{//大堆public://向上调整void adjust_up(size_t child){compare com;//注意int parent (child - 1) / 2;while (child 0){if (com(_con[parent], _con[child]))//注意{swap(_con[child], _con[parent]);child parent;int parent (child - 1) / 2;}else{break;}}}//向下调整void adjust_down(size_t parent){compare com;//注意size_t child parent * 2 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[child], _con[parent]);parent child;child parent * 2 1;}else{break;}}} 其中less为小于比较的类而greater为大于比较的类。 而后我们通过使用类模板参数compare将两者整合在一起因为库里的优先级队列默认即为大堆所以我们使用缺省参数默认为less。 前边已经提到使用仿函数就是使用对应类的对象所以我们需要创建compare类的对象com并传入比较内容进行比较。 这里要注意两个比较数据的先后位置要按照到底是谁大于谁而传入正确的先后顺序。 随后就可以按照排序要求对类型进行更改按照我们的代码方式less为降序greater为升序。  总结 优先级队列的分享到这里就结束啦。 目前为止不难看出C的这些容器的底层数据结构都是我们所学习过的所以对于掌握容器的使用并不困难。 喜欢本篇文章记得一键三连我们下期再见~
http://www.hkea.cn/news/14347255/

相关文章:

  • 网站快备asp网站制作
  • 做网站的工作叫什么做英文网站 是每个单词首字母大写 还是每段落首字母大写
  • 网站建设平台安全问题有哪些方面网站会员充值做哪个分录
  • 温州哪里有做网站榆树市住房和城乡建设局网站
  • 网站首页跳出弹窗苏州相城区最新楼盘价格
  • 网站开发的大学生应届简历seo算法
  • 深圳建站公司模板高平企业网站
  • 培训教育网站建设做网站后期维护工资贴吧
  • pc网站转换手机网站代码网页升级访问紧急通通知
  • 在哪里做网站设计英文电商网站建设
  • 网站宣传有文化事业建设费吗网站开发一般过程
  • 广州app网站建设政务网站建设原则
  • 手机网站建设基本流程成都微网站开发
  • 提供常州网站推广网站建设与管理实践报告总结
  • 做exo小说的网站百度搜索广告怎么投放
  • 网站 网页区别是什么iis启动wordpress
  • 万网网站备案查询网站页面设计需要遵循的六大原则
  • 莆田市秀屿区建设局网站背景做网站公司
  • 做一个展示型网站多少钱无锡微信网站建设价格
  • 昆山做企业网站免费设计素材下载
  • 做网站选择哪家运营商装修公司网站模板
  • 北京怎么做网站推广wordpress顶部加横幅
  • 网站建设模板型和定制型网站底部信息
  • 湛江网站制作优化凡客诚品还有人买吗
  • 做网站官网好处怎么在中国做网站网站
  • 网站建设需求分析调研表电子商务以后的就业方向
  • 网站开发周期是什么意思西安哪个公司做网站
  • 推网站wordpress 自适应主题
  • 电子商务网站营销方案永州企业网站开发
  • 购物网站建设过程做算法题网站