У меня есть проблемы с приоритетной очереди:C++, приоритетная очередь, элементы не сортируются
std::priority_queue <NodePrio, std::vector<NodePrio>, sortNodesByPrio> PQ;
где
struct NodePrio
{
Node *node;
double priority;
NodePrio() : node(NULL), priority(0) {}
NodePrio(Node *node_, double priority_) : node(node_), priority(priority_) {}
};
и
class sortNodesByPrio
{
public:
bool operator() (const NodePrio &n1, const NodePrio &n2) const;
}
bool sortNodesByPrio::operator() (const NodePrio &n1, const NodePrio &n2) const
{
return n1.priority < n2.priority;
}
После неоднократно толкая новые элементы
PQ.push(NodePrio(node, distance));
и от любого момента времени они не отсортированные (см ниже) ... Я пытался отладить код, код компаратора многократно выполняется ...
Step1:
push (node, 55.33);
PQ:
[0] 55.33
Step2:
push (node, 105.91);
PQ:
[0] 105.91
[1] 55.33
Step 3:
push (node, 45.18);
PQ:
[0] 105.91
[1] 55.33
[2] 45.18
Step 4:
push (node, 70.44);
PQ:
[0] 105.91
[1] 70.44
[2] 45.18
[3] 55.33 //Bad sort
Что вы подразумеваете под словом "они не отсортированы?" Можете ли вы опубликовать некоторые данные образца, которые вы вводите, и результат, когда вы выталкиваете все данные из очереди приоритетов? – 2010-11-26 18:30:33
Можете ли вы привести пример или два ваших ввода и каково итоговое содержимое очереди? Кроме того, что вы пытались на пути отладки до сих пор? – suszterpatt 2010-11-26 18:32:12