OJ:自己实现一个简单的 priority_queue
Description
补足程序,使得下面程序输出结果是:
1.8
2.4
3.8
4.9
8.8
#include <iostream>
#include <algorithm>
#include <string>
#include <queue>
#include <set>
#include <vector>
using namespace std;
int main()
{
// Your Code Here
q.push(2.4);
q.push(3.8);
q.push(1.8);
q.push(4.9);
cout << q.top()<<endl;
q.pop();
cout << q.top()<<endl;
q.pop();
cout << q.top()<<endl;
q.pop();
q.push(8.8);
while(! q.empty()) {
cout << q.top() << endl;
q.pop();
}
return 0;
}
解法如下:
/* 调用 STL 库内的 priority_queue 类 */
priority_queue<float, vector<float>, greater<float> > q;
自己实现一个简单的 priorty_queue,代码如下:
#include <iostream>
#include <algorithm>
#include <string>
#include <queue>
#include <set>
#include <vector>
using namespace std;
template<typename T, typename _Comp = less<T> >
class Priority_queue
{
private:
vector<T> data;
_Comp comp;
public:
void push( T t ){
data.push_back(t);
push_heap( data.begin(), data.end(), comp);
}
void pop(){
pop_heap( data.begin(), data.end(), comp);
data.pop_back();
}
T top() { return data.front(); }
bool empty() { return data.empty(); }
};
int main()
{
Priority_queue<float, greater<float> > q;
q.push(2.4);
q.push(3.8);
q.push(1.8);
q.push(4.9);
cout << q.top()<<endl;
q.pop();
cout << q.top()<<endl;
q.pop();
cout << q.top()<<endl;
q.pop();
q.push(8.8);
while(! q.empty()) {
cout << q.top() << endl;
q.pop();
}
return 0;
}
OJ:自己实现一个简单的 priority_queue的更多相关文章
- 哪种缓存效果高?开源一个简单的缓存组件j2cache
背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...
- 在Openfire上弄一个简单的推送系统
推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...
- ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面
前言: 朋友们都期待我稳定地工作,但创业公司若要躺下,也非意念可控. 若人生注定了风雨飘摇,那就雨中前行了. 最机开始看聊新的工作机会,欢迎推荐,创业公司也可! 同时,趁着自由时间,抓紧把这系列教程给 ...
- 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...
- 如何开发一个简单的HTML5 Canvas 小游戏
原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wiz ...
- CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能
CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能 效果图 这是红宝书里的例子,在这个例子中,下述功能全部登场,因此这个例子可作为使用Compute Shader的典型 ...
- CSharpGL(23)用ComputeShader实现一个简单的ParticleSimulator
CSharpGL(23)用ComputeShader实现一个简单的ParticleSimulator 我还没有用过Compute Shader,所以现在把红宝书里的例子拿来了,加入CSharpGL中. ...
- 应用OpenMP的一个简单的设计模式
小喵的唠叨话:最近很久没写博客了,一是因为之前写的LSoftmax后馈一直没有成功,所以在等作者的源码.二是最近没什么想写的东西.前两天,在预处理图片的时候,发现处理200w张图片,跑了一晚上也才处理 ...
- 用php实现一个简单的链式操作
最近在读<php核心技术与最佳实践>这本书,书中第一章提到用__call()方法可以实现一个简单的字符串链式操作,比如,下面这个过滤字符串然后再求长度的操作,一般要这么写: strlen( ...
随机推荐
- asp.net 抽象方法和虚方法的用法区别,用Global类重写Application_BeginRequest等方法为例子
不废话,直接贴代码 public abstract class LogNetGlobal : System.Web.HttpApplication { protected void Applicati ...
- poj 3468 A Simple Problem with Integers(线段树区间更新)
Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...
- charming_memory
Memory Master 一 .Forget遗忘 遗忘似乎是记忆的天敌,但是善用遗忘规律却能帮助我们更好的记忆. 复习的最佳时间是实际材料的1~24小时,最晚不超过2天,复习时间太长,就有一种生疏的 ...
- 论文word排版相关插件
其中包括破解版的MathType.EndNote X7以及Aurora 链接:http://pan.baidu.com/s/1boRZTmf 密码:a6ai
- 转 SaaS应用十大关键NFR - 第1部分
非功能需求(SaaS的NFR)是跨越应用功能的跨越所有模块和功能的要求.这些要求深入到应用程序的架构,这是他们得到解决的地方.因此,在SaaS架构阶段之前了解这些NFR对于特定应用程序很重要,因此应用 ...
- RabbitMQ 使用主题进行消息分发
在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统.Consumer可以监听不同severity的log.但是,这也是它之所以叫做简单日志系统的原因, ...
- Centos6.5安装中文支持和中文输入法---VIM编辑器中文支持
Centos6.5安装中文支持和中文输入法 第一步:中文支持: 在shell命令下输入: # vi /etc/sysconfig/i18n 然后修改LANG="en_US.UTF-8 ...
- 手把手教你读取Android版微信和手Q的聊天记录(仅作技术研究学习)
1.引言 特别说明:本文内容仅用于即时通讯技术研究和学习之用,请勿用于非法用途.如本文内容有不妥之处,请联系JackJiang进行处理! 我司有关部门为了获取黑产群的动态,有同事潜伏在大量的黑产群 ...
- 一次非常有趣的 SQL 优化经历
阅读本文大概需要 6 分钟. 前言 在网上刷到一篇数据库优化的文章,自己也来研究一波. 场景 数据库版本:5.7.25 ,运行在虚拟机中. 课程表 #课程表 create table Course( ...
- 第47节:Java当中的基本类型包装类
Java当中的基本类型包装类 01 基本数据类型对象的包装类 什么是基本数据类型对象包装类呢?就是把基本数据类型封装成对象,这样就可以提供更多的操作基本数值的功能了. 基本数据类型对象的包装类8个: ...