【发布时间】:2018-02-23 16:16:52
【问题描述】:
所以,我正在用 C++ 编写一件事,我正在尝试使用配对堆实现优先级队列。我希望这个优先级随着时间的推移自动增加,这样如果元素(一个类)在堆中已经存在了 5 分钟,它的优先级(一个变量)就会增加。我不知道如何做到这一点。
我可以实现一个函数,在每个设定的时间内检查每个元素的持续时间,但问题是检查堆中的每个元素非常困难。所以我认为我需要在元素中做一些事情,但我不确定是什么以及如何做。
有什么简单的解决办法吗?我觉得我一定是错过了什么,但如果不是这样,那我最好放弃这个想法,因为我必须尽快完成这件事。
UP:这个程序是为人类排队的,所以这个想法的原因是不要让人们等待太久。优先级是任意的,在添加每个元素时都会为每个元素设置优先级“级别”,因此将时间设为优先级不是我的解决方案。
【问题讨论】:
-
只使用时间戳怎么样,该时间戳的年龄是优先级?如果你想根据元素在容器中的时间来确定元素的优先级,你可以使用
queue。 -
除此之外-您可能不希望“优先级”成为变量;但是一个getter函数;这样您就可以更改优先级的完成方式,而无需更改大量代码
-
我根本不想按时间确定元素的优先级,优先级会更加随意,例如在添加每个元素时为每个元素设置的“级别”优先级。只需要增加,以便具有较低优先级的元素不会停留太久。
标签: c++ timer priority-queue pairing-heap