priority

更新时间:2022-11-26 05:23:09 阅读: 评论:0


2022年11月26日发(作者:vain)

priority_queue优先队列按照由⼩到⼤顺序

C++优先队列的基本使⽤⽅法

在优先队列中,优先级⾼的元素先出队列。

标准库默认使⽤元素类型的<操作符来确定它们之间的优先级关系。

优先队列的第⼀种⽤法,也是最常⽤的⽤法:

priority_queueqi;

通过<操作符可知在整数中元素⼤的优先级⾼。

故⽰例1中输出结果为:96532

第⼆种⽅法:

在⽰例1中,如果我们要把元素从⼩到⼤输出怎么办呢?

这时我们可以传⼊⼀个⽐较函数,使⽤functional.h函数对象作为⽐较函数。

priority_queue,greater>qi2;

其中

第⼆个参数为容器类型。

第⼆个参数为⽐较函数。

故⽰例2中输出结果为:23569

第三种⽅法:

⾃定义优先级。

structnode

{

friendbooloperator<(noden1,noden2)

{

ty

}

intpriority;

intvalue;

};

在该结构中,value为值,priority为优先级。

通过⾃定义operator<操作符来⽐较元素中的优先级。

在⽰例3中输出结果为:

优先级值

95

82

61

23

14

但如果结构定义如下:

structnode

{

friendbooloperator>(noden1,noden2)

{

ty>ty;

}

intpriority;

intvalue;

};

则会编译不过(G++编译器)

因为标准库默认使⽤元素类型的<操作符来确定它们之间的优先级关系。

⽽且⾃定义类型的<操作符与>操作符并⽆直接联系,故会编译不过。

//代码清单

#include

#include

#include

usingNamespacestdnamespacestd;

structnode

{

friendbooloperator<(noden1,noden2)

{

ty

}

intpriority;

intvalue;

};

intmain()

{

constintlen=5;

inti;

inta[len]={3,5,9,6,2};

//⽰例1

priority_queueqi;

for(i=0;i

(a[i]);

for(i=0;i

{

cout<<()<<"";

();

}

cout<

//⽰例2

priority_queue,greater>qi2;

for(i=0;i

(a[i]);

for(i=0;i

{

cout<<()<<"";

();

}

cout<

//⽰例3

priority_queueqn;

nodeb[len];

b[0].priority=6;b[0].value=1;

b[1].priority=9;b[1].value=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;i

(b[i]);

cout<<"优先级"<<'t'<<"值"<

for(i=0;i

{

cout<<().priority<<'t'<<().value<

();

}

return0;

}

本文发布于:2022-11-26 05:23:09,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/23110.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:priority
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图