PriorityQueue&&Function overload
用 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的更多相关文章
- c++语言友元函数和成员函数对运算符重载
#include<iostream> using namespace std; /******************************************/ /*use mem ...
- javascript数据结构-优先队列
这里之所以扩充一个 有限队列 是因为,生活使用中队列通常会附加优先级,比如排队买票,一般老人和军人等会有优先权限. 实现:继承上篇的 普通队列实现.这里用一种方法,入队的时候,进行排序插入到指定位置, ...
- Google C++ Style Guide
Background C++ is one of the main development languages used by many of Google's open-source project ...
- 【转】 C++模板详解
C++模板 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数.返回值取得任意类型. 模板是一种对类型进行参数化的工具: 通常有 ...
- 你或许不了解的C++函数调用(1)
这篇博客名字起得可能太自大了,搞得自己像C++大牛一样,其实并非如此.C++有很多隐藏在语法之下的特性,使得用户可以在不是特别了解的情况下简单使用,这是非常好的一件事情.但是有时我们可能会突然间发现一 ...
- C++@sublime GDB调试
正文转自:http://www.cppblog.com/lucency/archive/2012/08/09/59214.html 之前在网上搜索了好久使用sublime调试C和C++的文章,但是徒劳 ...
- 跨平台渲染框架尝试 - Texture管理
纹理是渲染器重要的资源,也是比较简单的资源.本文将详细讨论纹理资源的管理. 在资源管理概述中提到,资源就是一堆内存和CPU与GPU的访问权限.纹理管理在资源管理之上,要负责如何使用者一堆内存构造纹理对 ...
- (转) class II
Overloading operators Classes, essentially, define new types to be used in C++ code. And types in ...
- Boost 1.61.0 Library Documentation
http://www.boost.org/doc/libs/1_61_0/ Boost 1.61.0 Library Documentation Accumulators Framework for ...
- JavaScript 高级程序设计(第3版)笔记——chapter3:基本概念(函数部分)
3.7函数 3.7.1 理解参数 ECMAScript 函数不介意传递进来多个参数,也不在乎传递进来的参数是什么数据类型.因为在 ECMAScript 中的参数在内部是用一个数组来表示的.在函数体内可 ...
随机推荐
- 获取git远程分支仓库
1:新建本地目录 2:进入并初始化这个目录 git init 3:新建一个文件,并添加 git add . 4: git commit -m "first commit" 5:新建 ...
- managing projects with GNU make pdf
读 c++编程思想的时候作者推荐的关于makefile的书,大家随意抱走. 链接:https://pan.baidu.com/s/1k0qg9iA3V25C2yJnOi9WfQ 提取码:5vx1
- yum无法安装nginx
yum无法安装nginx,检查yum配置文件
- android本地文件处理的一些经验
选择文件后,现在一般返回 Uri contentResolver.getType(selUrl)结果如下 .txt text/plain .jpeg image/jpeg .mp4 video/mp4 ...
- c语言学习---gets()读取字符串,以及\0,fgets()put()fputs()
#include<stdio.h> //gets()读取字符串, 可以读取空格 int main() { char num[2] = "";//gets 也会造成内存污 ...
- Oracle dump文件的一些经验
dump文件对于DBA而言再平常不过了.不过因为dump文件是二进制文件,我们平时使用中不太关注.再导入dump文件时有很多细节和技巧是值得注意的. 1.查看dump文件的一些基本信息 strings ...
- QFramework UI 笔记(后续不断 直到UKitI篇结束)
1.所有的UIElement 传消息给 UIPanel 时,必须先注册 SendEvent(); RegisterEvent(); 2.注意Unity直接生成控件的名称,命名带(1)之类的 ...
- js任务执行顺序
JS 线程简述 js是单线程的,一次只能执行一个任务,执行完毕后才能继续下一个. js执行任务的方式也叫作同步执行,同步和异步与我们平时理解的不太一样,平时的同步我们会认为是多个事情一起做,但是在js ...
- 手写JS深拷贝
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CSS3-3D导航(transform:rotate)
借助transform:rotate实现上图的3D导航效果 具体代码如下 1 <div class="nav"> 2 <ul> 3 <li> 4 ...