ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c++ 队列

2020-03-06 12:04:48  阅读:236  来源: 互联网

标签:priority 优先 队列 元素 c++ queue 排序


1.普通队列

头文件 : include<queue>

构造队列Q : queue <队列类型> Q

部分操作:

Q.push(x) 入队

Q.pop() 出队

Q.top() 读取队首元素

Q.back() 读取队尾元素

Q.empty() 判断队列是否为空 为空返回true

Q.size() 查询队列长度

清空队列 : 一个一个pop()

 

 

2. 优先队列(好像就是堆)

特点:在队列的基础上把队中的元素按照(一定的方式)排序了

头文件: include<queue>

构造优先队列Q : priority_queue <队列中元素类型,容器类型,一定的方式> Q

元素类型: 不解释

容器类型 :一般就是 vector(应该是默认) 

一定的方式!!(我觉得这里是关键):

1.默认方式:就是空着不写

priority_queue <int> Q; 这里只写了元素类型 也就是默认容器类型和一定的方式

排序结果:从大到小排 也就是递减 也就是队首元素是最大的。。。

 

2.自己选择递增还是递减,这个有固定的写法 2种

(个人观点) 优先队列就是按照 '<' 和 '>' 来对队列进行排序

其中 '<' 对应的函数是less也就是递减来排   

         '>'对应的是greater也就是递增来排

priority_queue < int,vector<int>,less<int> > Q 递减

priority_queue <int,vector<int>,greater<int> > Q 递增

 

3.自定义优先队列(就是自己写一个结构体 按照这个结构体来排序)

struct ppp

{

         int a;

        int b;

};

 bool operator < (ppp k , ppp t)

//这里把 ‘<’ 重载了 就是把 ‘<’ 的判断标准改了 也就是把less的操作方式改了

  {

              return k.a < t.a; //改为根据a的大小 来对队列递减排序(前面说了‘<’对应递减)

  }

//也可以重载 ‘>’ 

 

priority_queue <ppp , vector<int> , less<int> > Q; //因为我们把 ‘<’ 重载了所以现在的less就是按照结构体来排序的 不过还是递减 只是不是单纯比较队中元素大小 而是根据结构体中a的大小来比较, 比如Q.top() 就是输出队中对应a值最大的元素

 

操作:

优先队列没有 Q.back()操作

其他和队列相同

 

 

第一次写东西 觉得还要改进 感觉屁话太多 先不公开了 哪有脸公开呀。。

 

标签:priority,优先,队列,元素,c++,queue,排序
来源: https://www.cnblogs.com/Bellmond/p/12425725.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有