C++:库函数优先级队列(priority_queue)输出最小值 代码

库函数优先级队列(priority_queue)的实现方式是堆(heap), 默认是输出最大值.

输出最小值, 需要指定参数, priority_queue<int, vector<int>, greater<int> >

代码:

/*
 * main.cpp
 *
 *  Created on: 2014.7.20
 *更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/
 *      Author: spike
 */

/*eclipse cdt, gcc 4.8.1*/

#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;
}

输出:

1 3 4 5

作者:csdn博客 Spike_King

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索include
, 队列
, 优先级
, push
, 输出
, priority_queue
, priority_queue详解
priority_queue实例
c语言代码、代码、ultraedit、源代码、microsoft visual c++,以便于您获取更多的相关知识。

时间: 2024-10-31 01:12:59

C++:库函数优先级队列(priority_queue)输出最小值 代码的相关文章

[算法系列之四]优先级队列

[概念] 优先级队列,顾名思义,就是一种根据一定优先级存储和取出数据的队列.它可以说是队列和排序的完美结合体,不仅可以存储数据,还可以将这些数据按照我们设定的规则进行排序.优先级队列是堆的一种常见应用.有最大优先级队列(最大堆)和最小优先级队列(最小堆).优先级队列是一种维护有一组元素构成的集合S的数据结构. [优先队列支持的基本运算] [cpp] view plaincopy //建立一个保存元素为int的优先级队列,其实是建了一个小顶堆   //但是请特别注意这样的建的堆默认是大顶堆,即我们

浅谈算法和数据结构 五 优先级队列与堆排序

在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象.最简单的一个例子就是,在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话. 在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象.这种数据结构就是优先级队列(Priority Queue) . 本文首先介绍优先级队列的定义,有序和无序数组以及堆数据结构实现优先级队列,最后介绍了基于优先级队列的堆排序(Heap Sort) 更

【UVA 11997 K Smallest Sums】优先级队列

来自<训练指南>优先级队列的例题. 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18702 题意:给定k个整数数组,各包含k个元素.在每个数组中取一个元素加起来,可以得到kk个和,求这些和中最小的k个值(不去重). 数据范围:k [2, 750] 思路:暴力枚举k^k不可取. "先来看问题的简化版:给出两个长度为k的数组A和B,分别在A和B中任取一个数并相加,可以得到k^2个和,求这些和中最小的k个

解析Java中PriorityQueue优先级队列结构的源码及用法_java

一.PriorityQueue的数据结构 JDK7中PriorityQueue(优先级队列)的数据结构是二叉堆.准确的说是一个最小堆. 二叉堆是一个特殊的堆, 它近似完全二叉树.二叉堆满足特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆. 当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆. 当父节点的键值总是小于或等于任何一个子节点的键值时为最小堆. 下图是一个最大堆 priorityQueue队头就是给定顺序的最小元素. prio

Java数组模拟优先级队列数据结构的实例_java

优先级队列如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了.这样,我们就引入了优先级队列 这种数据结构. 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素 .对于优先权相同的元素,可按先进先出次序处理或按任意优先权

优先级队列实现哈夫曼树的编码和译码

//优先级队列实现的哈夫曼树的编码和译码 #include<iostream> #include<queue> #include<string> using namespace std; class Node { public: float weight; Node* left; Node* right; char ch; Node(float w,Node* l=NULL,Node* r=NULL,char c=' '):weight(w),ch(c),left(l)

Linux下入队列和出队列操作的C代码示例

概述 最近有在校的学生朋友在问我,数据结构中的队列在实际的软件开发项目中有什么样的用处. 大家都知道,队列的特点是先入先出,即数据是按照入队列的顺序出队列的.在实际的软件开发项目中,当一个中间模块需要接收和发送大量的消息时,队列就可以大展身手了.我们可以将接收到的数据存储在一个全局队列中,然后在另外的程序流程中将数据从同一个全局队列中取出来,经过一定的处理之后将消息发送到另外的模块.这样做可以降低程序的性能瓶颈. 本文用实际的C代码示例了简单的数据入队列和出队列的方法,大家可据此了解队列的实际用

stl的优先级队列

#include <iostream> #include <vector> #include <queue> using namespace std; class Timer; typedef Timer* RTimer; class Timer { public: Timer():_interval(0),_expires_time(0){} virtual ~Timer(){} virtual void schedule_timer(int sec,int usec

云计算设计模式(十六)——优先级队列模式

云计算设计模式(十六)--优先级队列模式 优先发送到服务,以便具有较高优先级的请求被接收和高于一个较低优先级的更快速地处理请求.这种模式是在应用程序是有用的,它提供不同的服务级别保证或者针对独立客户. 背景和问题 应用程序可以委托给其他服务的具体任务;例如,为了执行后台处理或与其他应用程序或服务的整合.在云中,消息队列通常用于将任务委派给后台处理.在许多情况下,请求由服务接收的顺序是不重要的.然而,在某些情况下,可能需要优先考虑的具体要求.这些要求必须早于较低优先级的其他可能先前已发送由应用程序