zoukankan      html  css  js  c++  java
  • priority_queue实现

    #include <algorithm>
    
    using namespace std;
    /*
    priority_queue只允许在底端加入元素,并从顶端取出元素,
    其内部元素不是依照被推入的次序排列,而是自动按照元素的权值排列,权值最大的元素排在最前面
    缺省情况下priority_queue是利用一个max_heap完成.模板默认参数是vector,less. 
    常用接口:top(), push(), pop(),类似栈的接口
    */ template <class T,class Sequence=vector<T>,class Compare=less<typename Sequence::value_type>> class priority_queue { public: typedef typename Sequence::value_type value_type; typedef typename Sequence::size_type size_type; typedef typename Sequence::reference reference; typedef typename Sequence::const_reference const_reference; protected: Sequence c;//底层容器 Compare comp;//元素大小比较标准 public: priority_queue() :c(){} explicit priority_queue(const Compare& x) :c(), comp(x){} //make_heap(),push_heap(),pop_heap()都是泛型算法 template <class InputIterator> priority_queue(InputIterator first, InputIterator last, const Compare& x) : c(first, last), comp(x) { make_heap(c.begin(), c.end(), comp); } template <class InputIterator> priority_queue(InputIterator first, InputIterator last) : c(first,last) { make_heap(c.begin(), c.end(), comp); } void push(const value_type &x) { __STL_TRY{ c.push_back(x); //重排heap push_heap(c.begin(), c.end(), comp); } __STL_UNWIND(c.clear()); } void pop() { __STL_TRY{ pop_heap(c.begin(), c.end(), comp); c.pop_back(); } __STL_UNWIND(c.clear()); } };
  • 相关阅读:
    jdk环境变量配置(默认安装在c盘下)
    Less使用笔记
    Bootstrap4元素显示和隐藏
    npm常见命令及参数用法
    详解:cssrem插件 -- VS Code px转rem神器
    关于position:fixed的注意点
    解决:无法push到远程仓储
    解决:'git' 不是内部或外部命令,也不是可运行的程序
    小程序3-地图定位2
    转-前端开发流程
  • 原文地址:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/4230378.html
Copyright © 2011-2022 走看看