首页 > 代码库 > 优先队列(priority_queue)
优先队列(priority_queue)
优先队列(priority_queue),是一种被专门设计的容器,其第一个元素总是它所包含的最大的元素。
使第一个元素总是它所包含的优先级最高的元素,这种情况类似于堆,元素可以随时插入,只能检索优先级最高的元素。
例如,当优先队列中是int
类型的数据时,则数值越大优先级越高。
Member functions | Implementation function |
---|---|
empty() | 判断优先队列是否为空 |
size() | 返回优先队列中的元素个数 |
top() | 获取优先队列中优先级最高的元素 |
push(x) | 将元素x 插入到优先队列中 |
pop() | 将优先级最高的元素从队列中删除 |
优先队列的优先级重载
优先队列,可以存放数值,也可以存放其它数据类型(包括自定义数据类型)。该容器支持查询优先级最高的元素这一操作,而优先级的高低是可以自行定义的。
我们可以通过重载小于运算符bool operator <
来实现。
比如整数,程序默认是数值较大的元素优先级较高,我们也可以定义数值较小的元素优先级较高。又比如下面的例子,在算法竞赛中经常出现,这里定义距离值较小的node
优先级较高。
struct node { int dist ,loc; node(){} bool operator < (const node & a) const { return dist >a.dist; }};priority_queue <node> Q;
上述代码起到优先级重载的作用,我们仍然可以进行top()
,pop()
等优美的操作。
优先队列(priority_queue)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。