欢迎来到天天文库
浏览记录
ID:8817357
大小:27.00 KB
页数:5页
时间:2018-04-08
《c优先队列的基本使用方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、C++优先队列的基本使用方法 #include#include#includeusingnamespacestd;structnode{ friendbooloperator<(noden1,noden2) { returnn1.priority"为从小打到排列 } intpriority; intvalue;};intmain(){ constintlen=5; inti; inta
2、[len]={3,5,9,6,2}; //示例1 priority_queueqi;//普通的优先级队列,按从大到小排序 for(i=0;i,greater>qi2;//从小到大的优先级队列,可将
3、greater改为less,即为从大到小 for(i=0;iqn;//必须要重载运算符 nodeb[len]; b[0].priority=6;b[0].value=1; b[1].priority=9;b[1].value
4、=5; b[2].priority=2;b[2].value=3; b[3].priority=8;b[3].value=2; b[4].priority=1;b[4].value=4; for(i=0;i5、); } return0;}对于队列里元素为一个结构体类型,按照某一个属性排序,就需要对比较函数进行重载小结一下:1、若是定义值类型对象,如: int main() { priority_queueqn; noden1; n1.a=9; noden2; n2.a=2; noden3; n3.a=50; qn.push(n1); qn.push(n2); qn.push(n3); int size=qn.size(); for(int i=0;i6、+) { cout<ne2.a) { 7、 return true; } else { return false; } } }; 其中在c++primer第三版中文版中关于操作符重载有如下描述:"程序员只能为类类型或枚举类型的操作数定义重载操作符我们可以这样来实现把重 载操作符声明为类的成员或者声明为名字空间成员同时至少有一个类或枚举类型的参数 按值传递或按引用传递"因此不可用指针类型的参数;2、如果想定义一个指针类型的优先队列,那就不可这么简单的定义了,你需要自定义一个自己的比较函数,在pri8、ority_queue的模板函数中,我们可以利用这样
5、); } return0;}对于队列里元素为一个结构体类型,按照某一个属性排序,就需要对比较函数进行重载小结一下:1、若是定义值类型对象,如: int main() { priority_queueqn; noden1; n1.a=9; noden2; n2.a=2; noden3; n3.a=50; qn.push(n1); qn.push(n2); qn.push(n3); int size=qn.size(); for(int i=0;i6、+) { cout<ne2.a) { 7、 return true; } else { return false; } } }; 其中在c++primer第三版中文版中关于操作符重载有如下描述:"程序员只能为类类型或枚举类型的操作数定义重载操作符我们可以这样来实现把重 载操作符声明为类的成员或者声明为名字空间成员同时至少有一个类或枚举类型的参数 按值传递或按引用传递"因此不可用指针类型的参数;2、如果想定义一个指针类型的优先队列,那就不可这么简单的定义了,你需要自定义一个自己的比较函数,在pri8、ority_queue的模板函数中,我们可以利用这样
6、+) { cout<ne2.a) {
7、 return true; } else { return false; } } }; 其中在c++primer第三版中文版中关于操作符重载有如下描述:"程序员只能为类类型或枚举类型的操作数定义重载操作符我们可以这样来实现把重 载操作符声明为类的成员或者声明为名字空间成员同时至少有一个类或枚举类型的参数 按值传递或按引用传递"因此不可用指针类型的参数;2、如果想定义一个指针类型的优先队列,那就不可这么简单的定义了,你需要自定义一个自己的比较函数,在pri
8、ority_queue的模板函数中,我们可以利用这样
此文档下载收益归作者所有