C++ 是否有可能从中更改;“一方”;在优先级队列中添加具有相同优先级的对象?

C++ 是否有可能从中更改;“一方”;在优先级队列中添加具有相同优先级的对象?,c++,priority-queue,C++,Priority Queue,我正在使用std::priority_队列,其中包含std::vector中的一些自定义对象。 现在假设在调用top()函数时,有具有相同优先级的对象,我会按从最早到最新的顺序排列它们。 因此,我的问题是,是否可以更改此行为,使top()在优先级相同的情况下返回最近的对象?一个简单(但有限)的解决方案是保留一个计数器,并将插入时计数器的值用作其他相等对象的辅助键。倒计时而不是倒计时将颠倒优先级顺序 有限,因为计数器可能会包装,但使用long这不是一个大风险。您可以提供一个自定义的“less”函数

我正在使用std::priority_队列,其中包含std::vector中的一些自定义对象。 现在假设在调用top()函数时,有具有相同优先级的对象,我会按从最早到最新的顺序排列它们。 因此,我的问题是,是否可以更改此行为,使top()在优先级相同的情况下返回最近的对象?

一个简单(但有限)的解决方案是保留一个计数器,并将插入时计数器的值用作其他相等对象的辅助键。倒计时而不是倒计时将颠倒优先级顺序


有限,因为计数器可能会包装,但使用
long
这不是一个大风险。

您可以提供一个自定义的“less”函数,该函数考虑您自己的订购。当然。给他们不同的优先级。你能提供一个例子来说明如何做到这一点吗?@J.AntonioPerez:只是一个
std::priority_队列
。您将得到
std::tuple::operator@MSalters所以我应该创建一些内部数据结构来跟踪具有相同优先级的对象,对吗?@ArgusKos:您不需要特殊类型<代码>标准::元组
就足够了。元组是按字段按字典顺序排列的。