欢迎来到天天文库
浏览记录
ID:8815136
大小:17.79 KB
页数:2页
时间:2018-04-08
《stl优先队列的使用方法进阶篇》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、//如果这个会了,那优先队列就全部OK了//优先队列在堆里放指针时候的运用//即用stl来构建最大堆最小堆//但是不同于一般的堆这里讲的是堆中放的是指针是指针!!!!!!//简单易懂浅显但不深刻,能迅速应用,后面的要自己在实际操作中理解//#include#include//注意这里的头文件定义 写成上面的那个是不行的#includeusingnamespacestd;//这句话一定不能忘记//STL在这里的操作类似JAVA的类的概念,需要重新定义一下类的操作优先队列的模板里面放的是某各class所以我们要定义类//重写structbb{i
2、ntnum;//这里你可以放任意你愿意放的类但是这个class要有自己的比大小操作符bb(intn=0){num=n;}//初始化};//重点!!!!!!!!!////运用指针来比较类实例大小的时候要注意存在模板中的第三个类,重载的东西是操作符()//为此,我们要重写优先级别的定义优先队列模板中的最后一个运算类相当于运算符classop{public:booloperator()(bb*a,bb*b){returna->numnum;}//这里放进来的就是classbb的指针了而这个我们自己定义的op运算就是比较指针所指向的bb类的实例的大小注意返回为bool//大顶堆小于大顶堆大于
3、小顶堆};//测试intmain(){priority_queue,op>Q;//这里用的是一个类模板//第一个参数bb*的意思是优先队列里的内容是什么bb*指针//第二个参数vector的意思是优先队列的储存方式是什么vector线性数组list链表//第三个参数op的意思采用哪种方式确定优先队列的优先级别的运算我们采用指针的比较op类运算bba(1),b(2),c(3),d(5),e(6),f(7);//实例//指针实例bb*aa=&a;bb*bi=&b;//不可以用bb哦bb*cc=&c;bb*dd=&d;bb*ee=&e;bb*ff=&f;Q
4、.push(aa);Q.push(bi);Q.push(cc);Q.push(dd);Q.push(ee);Q.push(ff);//编译成功后说明语法正确否则检查指针op类等//输出测试cout<num<
此文档下载收益归作者所有