`
追梦--
  • 浏览: 37948 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

c++-STL-priority_queue(优先队列)

阅读更多
    如果我们在竞赛中如果用堆来实现一个优先队列,代码量不说,还有可能出现低级错误。这时候,c++ STL就是我们比赛中的一个好助手了。
    和其他STL容器一样,priority_queue一样的又插入和删除元素。顾名思义,priority_queue就是权值大的优先出列,我们只需要插入数据,并拟定规则(重载操作符),priority_queue 自动排序(还是利用大顶堆,原理在此不详述)。
priority_queue 的构造函数有七种,这里只讲述比较重要的
      priority_queue<int> que;
      priority_queue<int,list<int>> (复制构造函数)
      priority_queue<int,vector<int>,cmp>(cmp为比较函数)
常用的方法有:
c.top()         返回队列头部数据
c.push(elem) 在队列尾部增加elem数据
c.pop()          队列头部数据出队
c.empty() 判断队列是否为空
c.size() 返回队列中数据的个数
     

    但我们要将自己定义的类型使用priority_queue怎么办,重载运算符,代码如下:

#include<iostream>
#include<queue>
using namespace std;
struct node{
      int x;
      int y;
      friend bool operator < (const node a,const node b){
           if(a.x!=b.x){
              return b.x<a.x;             
           }else{
              return b.y<a.y;      
           }       
           //x小的先出列,相同再根据 y 的大小 
      }       
};
int main(){
     priority_queue<node> que;
     node nodeList[6];
     for(int i=1;i<6;i++){
         node newNode;
         newNode.x = i;
         newNode.y = i;   
         que.push(newNode);    
     }
     node newNode; 
     newNode.x = 3; newNode.y=4;
     que.push(newNode);
     while(!que.empty()){
         node node1 = que.top();
         que.pop();
         cout << node1.x << " " << node1.y << endl;                    
     }
     system("pause");
     return 0;
} 

0
5
分享到:
评论

相关推荐

    STL中priority_queue

    priority_queue 是 STL 中的一种容器,可以实现优先级队列的功能。下面,我们将详细介绍 priority_queue 的使用方法和实现原理。 priority_queue 的基本概念 priority_queue 是一种特殊的队列,它可以自动对元素...

    SGI-STL-.rar_STL_sgi stl

    STL(Standard Template Library,标准模板库)是C++编程中不可或缺的一部分,它提供了一组高效、可重用的数据结构和算法。这个压缩包“SGI-STL-.rar_STL_sgi stl”包含了SGI(Silicon Graphics, Inc.)版本的STL...

    STL-queue--.rar_stl queue

    STL队列常用于任务调度、消息传递、优先级队列(通过结合`priority_queue`实现)、网络缓冲区管理等场景。线段树则广泛应用于动态规划、几何问题、字符串处理等领域,对于需要高效处理区间数据的问题非常有用。 ...

    数据结构课程设计优先队列数据(priority_queue)类型

    在数据结构课程设计中,优先队列数据类型(priority_queue)是核心概念之一,常用于实现高效的调度、搜索和优化问题。在本项目中,我们将讨论如何实现这种数据结构以及其主要操作。 **一、优先队列的定义** 优先...

    STL.rar_C++ STL_C++ STL_STL_STL c++_STL教程

    - 特殊容器如stack(栈)、queue(队列)和priority_queue(优先队列)的使用场景和操作方法。 - 泛型编程的概念,理解模板和模板函数在STL中的作用。 - STL容器和算法的性能分析,如时间复杂度和空间复杂度。 通过...

    priority_queue.pdf

    从提供的文件内容来看,文档标题为"priority_queue.pdf",描述同样为"priority_queue.pdf",说明该文档是关于优先队列(priority queue)的,它是C++标准模板库(STL)中的一个重要容器。由于文档内容是以OCR扫描...

    【C++入门到精通】C++入门 - priority-queue(STL)优先队列

    priority_queue 源码

    source-stl.rar_STL 源码_stl source_stl 代码

    5. **适配器**:适配器是一种设计模式,STL中有两种主要类型的适配器:容器适配器(如stack、queue和priority_queue)和迭代器适配器。它们可以将现有的容器或迭代器转换为其他形式,以满足特定需求。 6. **内存...

    编写优先队列数据(priority_queue)

    在C++中,`priority_queue`是STL(Standard Template Library)的一部分,提供了对优先队列的支持。然而,自定义优先队列可以提供更多的灵活性,比如在上述代码中,我们看到了一个基于最大堆实现的自定义优先队列。 ...

    Data-structure-STL.rar_stl程序例子_数据结构与STL

    例如,可以使用`priority_queue`实现堆,`stack`和`queue`作为后进先出(LIFO)和先进先出(FIFO)的数据结构,利用STL的容器和算法实现图的遍历和搜索等。 综上所述,"Data-structure-STL.rar"这个压缩包可能包含...

    SGI-STL.rar_sgi stl

    例如,堆栈(stack)、队列(queue)和优先级队列(priority_queue)就是对基本容器的适配器。 6. **内存管理**:SGI-STL使用了智能指针(如auto_ptr)和分配器(Allocator)来管理内存,智能指针自动处理对象的...

    STL_quene.rar_crowd7oc_优先队列 堆_大根堆_大根对 c++_小根堆

    其中,优先队列(Priority Queue)是STL提供的一种数据结构,它是一种特殊的队列,遵循“最大优先”或“最小优先”的原则。在本案例中,我们将探讨如何使用STL来实现大根堆和小根堆,以及它们在优先队列中的应用。 ...

    STL-Manual.rar_stl chm

    - `stack`模拟了后进先出(LIFO)的栈数据结构,`queue`模拟先进先出(FIFO)的队列,`priority_queue`则按优先级处理元素。 6. 泛型编程: - STL的精髓在于泛型编程,它允许开发者编写与特定类型无关的代码,...

    EffectiveSTL_STL_C++_experience_gas841_C++STL_

    5. 特殊容器和组件:如stack(栈)、queue(队列)和priority_queue(优先队列)等,它们是基于现有容器实现的抽象数据类型,Meyers会指导读者如何有效地利用它们。 6. 模板元编程:Meyers还涉及了模板元编程这一...

    c++API.zip_-baijiahao_C++帮助文档_Load c++_STL库_stl API

    6. 适配器:如stack、queue、priority_queue,它们将基础容器包装成特定的行为模式,如后进先出(LIFO)的栈、先进先出(FIFO)的队列和优先级队列。 在"C++API.chm"文件中,你可以找到关于这些组件的详细说明,...

    侯捷STL课件_C++_候捷课件stl_c++侯捷课件_

    例如,stack和queue是基于deque的适配器,priority_queue是基于heap的适配器。侯捷会详细解析这些适配器的工作原理和使用方法。 6. **内存管理(Memory Management)**:STL容器通常使用智能指针(如auto_ptr、...

    SGI-STL.zip

    5. 配适器(Adapters):例如stack(栈)、queue(队列)、priority_queue(优先队列),它们将现有的容器包装为特定的抽象数据类型。 "The Annotated STL Sources V3.3"包含了对SGI-STL实现的详细注释,这对于学习...

    C++ - SGI 版本 STL源码

    - priority_queue: 优先级队列,底层通常是一个最大堆。 通过研究SGI版STL源码,开发者不仅可以深入理解C++ STL的工作原理,还能学习如何设计高效的数据结构和算法。这对于提升C++编程技能,优化代码性能,以及...

    SGI-STL(version3.3)

    - `priority_queue`:优先级队列,元素总是按特定顺序(通常是最小堆)排列。 5. 功能对象(函数对象):也称为仿函数,它们是封装了操作行为的对象,可以作为算法的参数,如`less`、`greater`用于比较,`plus`、`...

    数据结构C++描述--STL源代码

    6. 配接器(Adapters):STL提供了一些容器和迭代器的配接器,比如栈(stack)、队列(queue)、优先队列(priority_queue)和反向迭代器(reverse_iterator),它们是基于其他容器和迭代器构建的,提供了更具体的...

Global site tag (gtag.js) - Google Analytics