priority_queue

#include<iostream>
#include<functional>
#include<queue>
using namespace std;
struct node
{
    friend bool operator<(node n1,node n2)
    {
        return n1.priority<n2.priority;
    }
    int priority,value;
};
int main()
{
   priority_queue<node>q;
   node b[5];
   for(int i=0;i<5;i++)
   {
       b[i].priority=5-i;
       b[i].value=i;
   }
   for(int i=0;i<5;i++)
    q.push(b[i]);
   for(int i=0;i<5;i++)
   {
        cout<<q.top().priority<<'\t'<<q.top().value<<endl;
         q.pop();
   }

    return 0;
}

  

时间: 2024-09-21 09:17:18

priority_queue的相关文章

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:

STL--容器适配器(queue、priority_queue、stack)

适配器(Adaptor)是提供接口映射的模板类.适配器基于其他类来实现新的功能,成员函数可以被添加.隐藏,也可合并以得到新的功能. STL提供了三个容器适配器:queue.priority_queue.stack. 这些适配器都是包装了vector.list.deque中某个顺序容器的包装器.注意:适配器没有提供迭代器,也不能同时插入或删除多个元素. 本文地址:http://www.cnblogs.com/archimedes/p/cpp-adapter.html,转载请注明源地址. 队列(qu

less-C++的STL中关于priority_queue算子的详细定义

问题描述 C++的STL中关于priority_queue算子的详细定义 priority queue的模板参数为<元素类型,容器类型,比较算子>其中默认的算子为less,我在网上看到的less的解释是:小的元素往前排,大的往后排,出队时序列尾的元素出队我就是不太懂这里为什么要是对尾的元素先出队,也就是q.top()返回的是队尾元素,且q.pop()删除的也是队尾元素--这不正好跟队列的定义完全相反了么?? 解决方案 优先队列已经不是普通队列了 他实际是一个小根堆 堆顶是最小元素 top默认返

deque queue and priority_queue

deque queue and priority_queue stl-deque deque 是双端队列,可实现栈与队列的操作. deque支持deque_ob[i] 形式的随机存取. stl-queue queue的基本操作有: 入队,如例:q.push(x); 将x 接到队列的末端. 出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值. 访问队首元素,如例:q.front(),即最早被压入队列的元素. 访问队尾元素,如例:q.back(),即最后被压入队列的元

STL之priority_queue为复合结构排序

priority_queue为复合结构排序: 1 #include <iostream> 2 #include <queue> 3 4 using namespace std; 5 struct Node{ 6 int x; 7 string y; 8 Node( int a= 0, string b = "" ): 9 x(a), y(b) {} 10 }; 11 bool operator<( Node a, Node b ){ // 注意这里的顺序和

优先队列(priority_queue)的C语言实现代码_C 语言

优先队列(priority_queue)和一般队列(queue)的函数接口一致,不同的是,优先队列每次出列的是整个队列中最小(或者最大)的元素. 本文简要介绍一种基于数组二叉堆实现的优先队列,定义的数据结构和实现的函数接口说明如下: 一.键值对结构体:KeyValue 复制代码 代码如下: // =============KeyValue Struct==================================typedef struct key_value_struct KeyValu

STL中sort、priority_queue、map、set的自定义比较函数

STL中,sort的默认排序为less,也就是说从小到大排序:priority_queue默认是less,也就说大顶堆:map默认是less,也就说用迭代器迭代的时候默认是小的排在前面:set默认是less,也就是说用迭代器迭代的时候是从小到大排序的. 1.sort #include <stdio.h> #include <algorithm> #include <functional> using namespace std; bool comp(const int&

STL队列 之FIFO队列(queue)、优先队列(priority_queue)、双端队列(deque)

1.FIFO队列     std::queue就是普通意思上的FIFO队列在STL中的模版. 1.1主要的方法有: (1)T front():访问队列的对头元素,并不删除对头元素 (2)T back():访问队列的末尾元素,并不删除末尾元素 (3)void pop():删除对头元素. (4)void push(T):元素入队 1.2代码实例 1 #include <iostream> 2 #include <queue> 3 using namespace std; 4 int m

priority_queue(优先队列)

普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除.在优先队列中,元素被赋予优先级.当访问元素时,具有最高优先级的元素最先删除. 优先队列具有最高进先出 (largest-in,first-out)的行为特征. 有限的元素集合,每个元素都有一个优先权操作 优先队列插入和删除元素的复杂度都是O(log2n),所以很快. 另一种描述方法是采用有序线性表,当元素按递增次序排列,使用链表时则按递减次序排列,这两种描述方法的删除时间均为( 1 ),插入操作所需时间为(n).