2010-12-11 145 views
-1

获取具有最高优先级队列中的元素值应该是首选。如何优先使用循环队列在C++中实现队列实现?

+2

它不是按照定义的队列。改为使用堆。 – Drakosha 2010-12-11 19:33:39

+0

有一个std :: priority_queue。 – Puppy 2010-12-11 19:53:23

+0

似乎已经产生了一些摩擦。也许你可以添加一些背景 - 你有多少优先级;更广泛的目标是什么,或者这是一个抽象的问题;我假设你想要一个固定大小的优先队列?这可能会帮助一些评论者直接回答... – 2010-12-11 20:39:34

回答

0

您是否需要多个队列,每个队列都有不同的优先级?你真正想要解决的问题是什么?

队列的概念是 - 它是一个队列,队列中的下一个优先级,你应该通过弹出关闭它的队列来通过队列。使用另一个队列实现优先队列 - 无论是否循环 - 都不是最有效的事情。您可以将其作为堆或树来实现 - 有许多文章,其中包括Wikipedia on priority queues

+1

是的,而优先级队列是不同的http://en.wikipedia.org/wiki/Priority_queue – Falmarri 2010-12-11 19:31:52

+0

如果我们正在讨论许多级别的优先级(例如1000),那么多个队列不是最好的解决方案。 – Dialecticus 2010-12-11 19:34:42

+0

@Falmarri - 不确定您是否正确阅读或解读我的答案。与另一个队列建立优先队列没有任何意义 - 认为你错过了这一点。 – 2010-12-13 09:35:45

0

您可以将优先级队列实现为二进制最小堆。每个条目的键可以代表其“优先级”,键越低,优先级越高。因此,删除根条目将返回具有最高优先级的条目。