首页 > 编程语言 >C++优先队列(priority queue)及重载运算符

C++优先队列(priority queue)及重载运算符

时间:2022-10-09 01:34:00浏览次数:52  
标签:queue 优先 队列 C++ times 运算符 重载 priority

定义:

普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。

头文件:

#include <queue>

运算符重载:

 friend bool operator<(node n1,node n2)
                return n1.elem>n2.elem;
 这是根据node结构体中的elem升序构建的一个操作符,   如果想要降序就把>换成<   关于优先队列的定义:
priority_queue<node>q;//其中node为结构体名称,q为优先队列名称

先上几个介绍优先队列的博客:

1. 优先级队列几个应用详解

2. 优先队列详解

3. 优先队列priority_queue 用法详解

http://blog.csdn.net/yuanjilai/article/details/8043157
关于运算符的重载:

struct point{    
    int x;    
    int y;    
    int times;    
    friend bool operator < (point a, point b)    
    {    
        return a.times > b.times;    //重载小于号使得小的先出队列    
    }    
};    


在此处定义一个优先队列priority_queue<point> q;

如果要按照以times进行从小到大排列,操作如上。

进行重载<操作符。

意思是如果a.times > b.times成立,那么结构体point a < point b成立。由于优先队列是按照从大到小排列,所以结构体b会排列到a之前,然而b.times是最小的,所以实现了按照times的从小到大排序,其实用一句话说就是要想b更大那么b.times.

***在结构体中比较时需要进行运算符的重载(重载<),在不需要结构体时:

priority_queue<int,vector<int>,less<int>>s;//定义优先级队列s,less表示按照递减(从大到小)的顺序插入元素
priority_queue<int,vector<int>,greater<int>>s;//定义优先级队列s,greater表示按照递增(从小到大)的顺序插入元素

优先队列(priority_queue)的基本操作:

empty(); 队列为空返回1
pop();   出队
push();  入队
top();   返回队列中优先级最高的元素
size();  返回队列中元素的个数

转载自:https://blog.csdn.net/riba2534/article/details/53450085

标签:queue,优先,队列,C++,times,运算符,重载,priority
From: https://www.cnblogs.com/jyssh/p/16770809.html

相关文章

  • C++智能指针的enable_shared_from_this和shared_from_this机制
    前言之前学习muduo网络库的时候,看到作者陈硕用到了enable_shared_from_this和shared_from_this,一直对此概念是一个模糊的认识,隐约记着这个机制是在计数器智能指针传递时才......
  • 深度探索C++对象模型 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1lcioBQey_wZamaRo8WLLhA点击这里获取提取码 ......
  • C++ STL :unordered_multimap
    1、代码#include<iostream>#include<unordered_map>usingnamespacestd;intmain(){unordered_multimap<int,int>myUnorderedMultiMap={{2,10},{1,20}......
  • c++ share ptr的使用
    关于share_ptrcppreferrence的介绍std::shared_ptrstd::shared_ptr Definedinheader <memory>  template< class T > class shared_ptr;......
  • 无sudo权限解决Anaconda libstdc++.so.6: version `GLIBCXX_3.4.20' not found
    查找包含`GLIBCXX_3.4.20'的libstdc++find/-name"libstdc++.so*"///为根目录下搜索,可以替换为用户指定路径根据上述指令显示的文件,选择一个最新版本的查看是否......
  • C++——网络编程(一)
    一、网络结构C/SClient-Server结构,Server负责管理数据,Client负责与用户交互。Server会成为性能的瓶颈。B/SBrowser/Server,这种模式......
  • 标识符、运算符
    标识符变量的名字方法的名字类的名字,等等标识符命令规则内容限定大小写敏感不可使用关键字关键字命名规范见名知意下划线命名法英文字母全小写......
  • c++ bitset用法
    一、声明:bitset<N>f;//N是二进制长度,这时每一位都是0存储数字的二进制:bitsetname(num);//定义长度为N的二进制数组,命名为name,将数字num的二进制存到其中;b......
  • shell 运算符
    shell中的比较运算符:-eq    //等于-ne    //不等于-gt    //大于(greater)-lt     //小于 (less)-ge    //大于等于-le  ......
  • C/C++简单音乐播放器系统
    C/C++简单音乐播放器系统程序设计题1:简单音乐播放器系统出题人:吴敏面向专业:计算机科学与技术难度等级:41问题描述编写一个简单音乐播放器软件,实现歌单文件的浏览,点......