我有優先級隊列的問題: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