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

用jquery做的书籍网站今日国内重大新闻

用jquery做的书籍网站,今日国内重大新闻,网站改版建设,游戏网站建设的策划书目录 1.priority_queue 实现: 2.仿函数 priority_queue仿函数 实现代码 1.priority_queue 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的,其实就是个堆,默认是大根堆。…

目录

 1.priority_queue

实现:

2.仿函数

priority_queue+仿函数 实现代码


1.priority_queue

       优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的,其实就是个堆,默认是大根堆。

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

简单实现:
#pragma once
#include<iostream>
#include<vector>
using namespace std;
namespace ch
{template <class T, class Container = vector<T>>class priority_queue{public:priority_queue(){}void adjust_up(int child) //向上调整算法{size_t parent = (child - 1) / 2;while (child > 0){if (c[parent] < c[child]){swap(c[parent], c[child]);child = parent;parent = (child - 1) / 2;}else{break;}}}void adjust_down(int parent) //向下调整算法{size_t child = parent * 2 + 1;while (child < c.size()){if (child + 1 < c.size() && c[child] < c[child + 1]){child++;}if (c[parent] < c[child]){swap(c[parent], c[child]);parent = child;child = parent * 2 + 1;}else{break;}}}template <class InputIterator>priority_queue(InputIterator first, InputIterator last){while (first != last){c.push(*first);first++;}for (int i = (c.size() - 1 - 1) / 2; i >= 0; i--) //建堆,时间复杂度为O(N){adjust_down(i);}}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[c.size() - 1]);c.pop_back();adjust_down(0);}private:Container c;};};

引入仿函数实现定义类型时就能决定大小堆 

2.仿函数

    就是定义一个类,类中只有一个重载了()的成员函数,可以有传入参数,需要调用时创建其对象,如:

class Print{void operator()(){cout<<"hehe"<<endl;}};
int main(){Print p;p();}

所以我们写个大于小于逻辑的仿函数,并在创建priority_queue时传入此类即可

priority_queue+仿函数 实现代码

    //小于仿函数template<class T>class myless {public:bool operator()(const T& x,const T& y) {return x < y;}};//大于仿函数template<class T>class mygreater {public:bool operator()(const T& x, const T& y) {return x > y;}};template <class T, class Container = vector<T>, class Compare = myless<T> >class priority_queue{public:priority_queue() = default;template <class InputIterator>priority_queue(InputIterator first, InputIterator last) {while (first != last) {c.push_back(*first);first++;}for (int i = (size()-1-1) / 2; i >= 0; i--) {adjust_down(i);}}bool empty() const {return c.empty();}size_t size() const {return c.size();}const T& top() const {assert(!empty());return c[0];}void adjust_up(size_t child) {while (child > 0) {size_t parent = (child - 1) / 2;if (comp(c[parent] , c[child])) {swap(c[parent], c[child]);}else {break;}child = parent;}}void push(const T& x) {c.push_back(x);adjust_up(c.size()-1);}void adjust_down(size_t parent) {size_t child = parent * 2 + 1;while (child < size()) {if (child + 1 < size() && comp(c[child] , c[child + 1])) {child++;}if (comp(c[parent] , c[child])) {swap(c[child], c[parent]);parent = child;child = child * 2 + 1;}else {break;}}}void pop() {assert(!empty());swap(c[0], c[size() - 1]);c.erase(c.end()-1);adjust_down(0);}private:Container c;Compare comp;};

http://www.tj-hxxt.cn/news/49367.html

相关文章:

  • ftp上传wordpress网站要多久香蕉和忘忧草对焦虑的影响
  • 尖草坪网站建设营销软文推广平台
  • 静态网站转成动态网站bt蚂蚁磁力搜索天堂
  • 中国白客网vip钓鱼网站开发泉州seo优化
  • 单页营销型网站模板网络营销案例2022
  • 网站建设找谁做百度网盘电脑版下载
  • 做宝宝衣服的网站域名检测查询
  • 网站开发不用java吗浏览器打开是2345网址导航
  • 哪里有网站源文件下载品牌推广运营策划方案
  • wordpress网上在线插件上海seo公司哪家好
  • 四川遂宁做网站的公司东莞百度seo电话
  • 高端汽车网站建设公司网站模版
  • 各大搜索引擎提交网站入口大全网络营销策略有哪五种
  • 多个网站域名 是新增接入他达拉非
  • 唐山网站从哪里找口碑营销
  • 四川聚锋建设工程有限公司官方网站四川seo整站优化
  • 羊肉口报关做网站百度推广登录入口登录
  • 吉林企业建站系统费用seo关键词怎么优化
  • 外贸福步论坛官网佛山seo优化外包
  • 南阳网站推广价格手机网站关键词seo
  • 网上书城网站开发意义手机关键词seo排名优化
  • 郑州哪里做网站最好工作手机
  • 男同志做爰网站参考网是合法网站吗?
  • 上海猎头公司招聘信息网络营销优化推广
  • 许昌做网站优化如何免费推广自己的网站
  • 学做淘宝店的网站吗电商seo是什么意思啊
  • 上海网站建设哪家公司好最近社会热点新闻事件
  • 网站导航为什么用ul列表做宁波seo整体优化公司
  • 网站域名会赠送几个邮箱在线教育
  • 网站建设模块北京网站优化指导