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

接网站建设 网站设计/关键词如何确定

接网站建设 网站设计,关键词如何确定,asp.net个人网站,什么是网盟推广目录: 1.priority_queue接口的实现(先建大堆) 1.push 加 向上调整的实现 2.pop 3.迭代器区间的构造 2.仿函数 3.仿函数优化我们的优先级队列 -------------------------------------------------------------------------------------------…

目录:

         1.priority_queue接口的实现(先建大堆)

                              1.push 加 向上调整的实现

                              2.pop

                              3.迭代器区间的构造

          2.仿函数

          3.仿函数优化我们的优先级队列

------------------------------------------------------------------------------------------------------------------------------

1.priority_queue接口的实现

1.push 加 向上调整的实现

 优先级队列的底层类似于一个数组的东西

 我们需要实现向上调整

2.pop

向下调整

 3.迭代器区间的构造

 那么写了一个迭代器期区间的构造,我们就需要在实现一个的构造函数

我们写了一个显示构造函数,编译器就不会在默认生成构造函数

调用它自己的默认拷贝构造

 

namespace cdc
{template<class T,class Container =vector<T>>class priority_queue{public:priority_queue(){}template<class InputIterator>priority_queue(InputIterator first, InputIterator last){while (first != last){_con.push_back(*first);}for (int i = (_con.size() - 1 - 1) / 2; i >= 0; i--){Adjust_down(i);}}void Adjust_up(size_t child){size_t parent = (child - 1) / 2;while (child>0){if (_con[child] > _con[parent]){std::swap(_con[child], _con[parent]);child = parent;parent = (child - 1) / 2;}else{break;}}}void push(const T& x){_con.push_back(x);Adjust_up(_con.size()-1);}void Adjust_down(size_t parent){size_t child = parent * 2 + 1;while (child<_con.size()){if (child + 1 < _con.size() && _con[child] < _con[child + 1]){child++;}if (_con[child] > _con[parent]){std::swap(_con[child], _con[parent]);parent = child;child = parent *2 +1;}else{break;}}}void pop(){std::swap(_con[0], _con[_con.size() - 1]);_con.pop_back();//进行向下调整Adjust_down(0);}const T& top() const {return _con[0];}bool empty() const {return _con.empty();}size_t size() const{return _con.size();}private:Container _con;};}

  2.仿函数

可是我们上面的队列只能排降序(建大堆),这样子就写死了,那么我们怎么才能写灵活呢,能够简单的控制建大堆还是建小堆

仿函数 /函数对象    --类  ,这个类重载operator()

 它的less的类对象可以像函数一样去使用

 

namespace cdc
{template<class T>class less{public:bool operator()(const T& x, const T& y){return x < y;}};template<class T>class greater{public:bool opeartor()(const T& x, const T& y){return x > y;}};
}int main()
{cdc::less<int> Isfunc;cout << Isfunc(1, 2) << endl;return 0;
}

less 、greater 类 库里都有实现的

3.仿函数优化我们的优先级队列

我们直接用库里的 less  和 greater  ,控制我们的比较

namespace cdc
{template<class T,class Container =vector<T>,class Compare=std::less<T>>class priority_queue{public:priority_queue(){}template<class InputIterator>priority_queue(InputIterator first, InputIterator last){while (first != last){_con.push_back(*first);}for (int i = (_con.size() - 1 - 1) / 2; i >= 0; i--){Adjust_down(i);}}void Adjust_up(size_t child){Compare com;size_t parent = (child - 1) / 2;while (child>0){//if (_con[child] > _con[parent])//if (_con[parent]<_con[child])if (com(_con[parent], _con[child])){std::swap(_con[child], _con[parent]);child = parent;parent = (child - 1) / 2;}else{break;}}}void push(const T& x){_con.push_back(x);Adjust_up(_con.size()-1);}void Adjust_down(size_t parent){Compare com;size_t child = parent * 2 + 1;while (child<_con.size()){//if (child + 1 < _con.size() && _con[child + 1] > _con[child])//if (child + 1 < _con.size() && _con[child] < _con[child + 1])if (child + 1 < _con.size() && com(_con[child] , _con[child + 1])){child++;}//if (_con[child] > _con[parent])//if (_con[parent] < _con[child])if (com(_con[parent] , _con[child])){std::swap(_con[child], _con[parent]);parent = child;child = parent *2 +1;}else{break;}}}void pop(){std::swap(_con[0], _con[_con.size() - 1]);_con.pop_back();//进行向下调整Adjust_down(0);}const T& top() const {return _con[0];}bool empty() const {return _con.empty();}size_t size() const{return _con.size();}private:Container _con;};}

我们less默认是大堆

greater是小堆

http://www.jmfq.cn/news/5320855.html

相关文章:

  • 县总工会网站建设情况/抖音搜索优化
  • 符合网络营销网站建设/营销软文的范文
  • 网站建设小江网页设计/游戏推广平台
  • 滨州 网站建设/东莞哪种网站推广好
  • 建设银行征信中心个人信用查询官方网站/最火的网络销售平台
  • 营口品牌网站建设/百度秒收录软件
  • 深圳南山企业网站建设/怎么建立自己的网站
  • 西安网站建设联系电话/高清的网站制作
  • 成华区微信网站建设推/搜索引擎优化策略
  • 泉州建设网站公司吗/谷歌收录查询
  • 玉树营销网站建设公司/宁德市医院东侨院区
  • 网站建设方案调查分析报告/新闻 近期大事件
  • 深圳龙华观澜网站建设公司/关键词权重
  • 漯河市源汇区建设局网站/seo优化排名教程百度技术
  • 南水北调中线干线工程建设管理局网站/百度搜索引擎官网
  • 网站群建设标准/全网引擎搜索
  • 贵州省建设厅官网站首页/济南seo公司
  • 建设一个营销网站有哪些步骤/如何做网站营销推广
  • 网站建设孩子半夜发烧怎么办/seo排名优化服务
  • 宠物店网站建设计划书/网络营销策划方案模板
  • 网站建设搜索优化/惠州百度seo排名
  • 党建工作网站建设情况/可以发外链的平台
  • 深圳物流网站建设/拼多多关键词排名查询软件
  • 徐汇网站建设推广/绍兴seo网站优化
  • 政府网站建设计划/seo优化网站词
  • 周口市城乡建设局网站/福州网站排名提升
  • 网站建设 视频/门户网站有哪些
  • 东营住房和城乡建设厅网站/2345网址导航 中国最
  • 服装培训网站建设/佛山百度快速排名优化
  • 内蒙建设厅官方网站/优化方案英语