




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
priority_queueint,vector,greater优先队列 按照由小到大顺序分类:转载Tech_ACMACM_数据结构2012-07-23 01:24563人阅读评论(0)收藏举报vectorclassn2lesscC+优先队列的基本使用方法#include#include#includeusing namespace std;struct nodefriend bool operator (node n1, node n2)return n1.priority n2.priority;/为从小打到排列int priority;int value;int main()const int len = 5;int i;int alen = 3,5,9,6,2;/示例1priority_queue qi;/普通的优先级队列,按从大到小排序for(i = 0; i len; i+)qi.push(ai);for(i = 0; i len; i+)coutqi.top() ;qi.pop();coutendl;/示例2priority_queueint, vector, greater qi2;/从小到大的优先级队列,可将greater改为less,即为从大到小for(i = 0; i len; i+)qi2.push(ai);for(i = 0; i len; i+)coutqi2.top() ;qi2.pop();coutendl;/示例3priority_queue qn;/必须要重载运算符node blen;b0.priority = 6; b0.value = 1;b1.priority = 9; b1.value = 5;b2.priority = 2; b2.value = 3;b3.priority = 8; b3.value = 2;b4.priority = 1; b4.value = 4;for(i = 0; i len; i+)qn.push(bi);cout优先级t值endl;for(i = 0; i len; i+)coutqn.top().prioritytqn.top().valueendl;qn.pop();return 0;对于队列里元素为一个结构体类型,按照某一个属性排序,就需要对比较函数进行重载小结一下:1、若是定义值类型对象,如:intmain() priority_queue qn; node n1; n1.a = 9; node n2; n2.a = 2; node n3; n3.a = 50; qn.push(n1); qn.push(n2); qn.push(n3); int size = qn.size(); for ( int i = 0; i size; i+) cout qn.top().a endl; qn.pop(); return 0;则定义优先级的时候,直接在类中写个friend 的操作符重载函数即可:class nodepublic : int a; node() node( int x):a(x)friend bool operator ne2.a) return true ; else return false ; ;其中在cprimer第三版 中文版中关于操作符重载有如下描述:程序员只能为类类型或枚举类型的操作数定义重载操作符我们可以这样来实现把重载操作符声明为类的成员或者声明为名字空间成员同时至少有一个类或枚举类型的参数按值传递或按引用传递因此不可用指针类型的参数;2、如果想定义一个指针类型的优先队列,那就不可这么简单的定义了,你需要自定义一个自己的比较函数,在priority_queue的模板函数中,我们可以利用这样一个templateclass _Ty, class _Container = vector, class _Pr = less 模板,在我们的程序代码中,则需要自己定义一个类来定义第三个模板参数,如:class nodePointerComparerpublic : nodePointerComparer() bool operator ()( const node* ne1, const node* ne2) const return ne1-lessthan(ne2); ;当然在这之前我们的类Node要重新书写class nodepublic : int a; node() node( int x):a(x) bool lessthan( const node* pnode) const return a a; ;这样在main函数中就可以定义指针类型的优先队列了:int main() priority_queue node*, vector , nodePointerComparer qn; node *n1 = new node(90); node *n2 = new node(2); node *n3 = new node(50); qn.push(n1); qn.push(n2); /span qn.push(n3); int size = qn.size(); for ( int i = 0; i size; i+) cout a endl; qn.pop(); return 0;2:二分查找 1675#include#includedouble a(double b) return 8*pow(b,4)+2*pow(b,2)+7*pow(b,3)+3*b+6;double search(double m,double n,double y) double mid=(m+n)/2; while(n-m0.00001) if(a(mid)=y) return mid; if(a(mid)y) return search(m,mid,y); if(a(mid)y) return search(mid,n,y); return mid;int main(void) int t; scanf(%d,&t); while(t-) double x,y,m,n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖南-湖南垃圾清扫与处理工一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北家禽饲养员三级(高级工)历年参考题库含答案解析
- 工业互联网平台漏洞扫描技术在金融行业的风险防控报告
- 2025-2030中国端氨基聚醚行业应用趋势及竞争格局预测报告
- 2025年事业单位工勤技能-河北-河北计算机文字录入处理员一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河北-河北堤灌维护工二级(技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-河北-河北假肢制作装配工一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-江西-江西殡葬服务工二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西理疗技术员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广西-广西堤灌维护工三级(高级工)历年参考题库典型考点含答案解析
- (2025年标准)委托他人要账协议书
- 2025-2030中国青少年无人机教育课程体系构建与创新能力培养研究
- 煤矿安全规程新旧版本对照表格版
- 2025山东“才聚齐鲁成就未来”水发集团高校毕业招聘241人笔试参考题库附带答案详解(10套)
- 中学2025年秋季第一学期开学工作方案
- 儿童急救流程
- GB 11122-2025柴油机油
- 私募薪酬管理办法
- 经营废钢管理办法
- 药品经营企业讲课课件
- 广东省深圳市海韵中学2026届中考押题语文预测卷含解析
评论
0/150
提交评论