用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue

    #include <iostream>
    #include <algorithm>
    #include <vector>
    
    using namespace std;
    
    class priority_queue
    {
        private:
            vector<int> data;
             
        public:
            void push( int t ){
                data.push_back(t);
                push_heap( data.begin(), data.end());
            }
             
            void pop(){
                pop_heap( data.begin(), data.end() );
                data.pop_back();
            }
             
            int top() { return data.front(); }
            int size() { return data.size(); }
            bool empty() { return data.empty(); }
    };

priority_queue常用的函数:

    top:读入顶端元素
    pop:删除顶端元素
    size:返回元素个数
    push:加入一个元素
    empty:如果为空,返回true
优先级队列(priority_queue)的实现方式是堆(heap), 默认是输出最大值
输出最小值, 需要指定参数, priority_queue<int, vector<int>, greater<int> >

        #include <stdio.h>  
      
        #include <queue>  
        #include <vector>  
        #include <functional>  
              
        using namespace std;  
              
        int main(void)  
        {  
            priority_queue<int, vector<int>, greater<int> > pque;  
              
            pque.push(3);  
            pque.push(5);  
            pque.push(1);  
            pque.push(4);  
              
            while (!pque.empty()) {  
                printf("%d ", pque.top());  
                pque.pop();  
            }  
            printf("\n");  
              
            return 0;  
        }

C++的函数重载
    http://www.cnblogs.com/skynet/archive/2010/09/05/1818636.html
    http://www.cnblogs.com/yshl-dragon/archive/2013/05/10/3067161.html

PriorityQueue&&Function overload的更多相关文章

  1. c++语言友元函数和成员函数对运算符重载

    #include<iostream> using namespace std; /******************************************/ /*use mem ...

  2. javascript数据结构-优先队列

    这里之所以扩充一个 有限队列 是因为,生活使用中队列通常会附加优先级,比如排队买票,一般老人和军人等会有优先权限. 实现:继承上篇的 普通队列实现.这里用一种方法,入队的时候,进行排序插入到指定位置, ...

  3. Google C++ Style Guide

    Background C++ is one of the main development languages used by many of Google's open-source project ...

  4. 【转】 C++模板详解

    C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数.返回值取得任意类型. 模板是一种对类型进行参数化的工具: 通常有 ...

  5. 你或许不了解的C++函数调用(1)

    这篇博客名字起得可能太自大了,搞得自己像C++大牛一样,其实并非如此.C++有很多隐藏在语法之下的特性,使得用户可以在不是特别了解的情况下简单使用,这是非常好的一件事情.但是有时我们可能会突然间发现一 ...

  6. C++@sublime GDB调试

    正文转自:http://www.cppblog.com/lucency/archive/2012/08/09/59214.html 之前在网上搜索了好久使用sublime调试C和C++的文章,但是徒劳 ...

  7. 跨平台渲染框架尝试 - Texture管理

    纹理是渲染器重要的资源,也是比较简单的资源.本文将详细讨论纹理资源的管理. 在资源管理概述中提到,资源就是一堆内存和CPU与GPU的访问权限.纹理管理在资源管理之上,要负责如何使用者一堆内存构造纹理对 ...

  8. (转) class II

    Overloading operators   Classes, essentially, define new types to be used in C++ code. And types in ...

  9. Boost 1.61.0 Library Documentation

    http://www.boost.org/doc/libs/1_61_0/ Boost 1.61.0 Library Documentation Accumulators Framework for ...

  10. JavaScript 高级程序设计(第3版)笔记——chapter3:基本概念(函数部分)

    3.7函数 3.7.1 理解参数 ECMAScript 函数不介意传递进来多个参数,也不在乎传递进来的参数是什么数据类型.因为在 ECMAScript 中的参数在内部是用一个数组来表示的.在函数体内可 ...

随机推荐

  1. Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist:...

    大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误"错误:Failed to download metadata for repo 'AppStr ...

  2. 初玩mybatis-Plus踩过的小坑(粗心大意)

    一开始没设置全局id为数据库自增长(数据库也要勾上自增长) 他是默认使用ID_WORKER生成id的 ,然后当我重新设置为自增长后 发现生成的id还是20位数,局部id也设置了 还是没用 ,百度说哪个 ...

  3. NVI手法实现Template Method设计模式

  4. uniapp 通用函数说明

    onLoad函数      监听页面加载,在onLoad中发送请求是比较合适的,即页面一加载就发送请求获取数据,option接受其他界面传过来的数据,数据类型为obj onLoad(option) { ...

  5. git从某个分支的指定历史版本中创建新分支

    git从某个分支的指定历史版本中创建新分支 前提: 有时候,我们在一个分支上做了许多修改,而这些修改因即将上线等原因不可修改.而现在有一个新任务,需要在这个分支的这些修改之前进行开发. 方案①(不推荐 ...

  6. JS学习-从服务器获取数据

    从服务器获取数据 Ajax 通过使用诸如 XMLHttpRequest 之类的API或者 - 最近以来的 Fetch API 来实现. 这些技术允许网页直接处理对服务器上可用的特定资源的 HTTP 请 ...

  7. QSlider CSS样式

    QSlider::groove:horizontal{ border:0px; height:15px; background:#deffe5; } QSlider::sub-page:horizon ...

  8. Java基础之标识符和关键字

    关键字 标识符 Java所有的组成部分都需要名字.类名.变量名以及方法名都被称为标识符. Java 中标识符是为方法.变量或其他用户定义项所定义的名称.标识符可以有一个或多个字符. 标识符注意点: 在 ...

  9. 启动JAVA服务

    # -*- coding: utf-8 -*- import re import sys from subprocess import Popen, PIPE import os import tim ...

  10. JavaScript异步概念及与c#异步的区别

    JS的异步操作函数往往是通过回调函数来实现异步任务的结果处理,在ES6之前如setTimeout函数和异步AJAX编程: 在ES6规范后Promise 类对象使得书写异步任务更加容易,返回Promis ...