[英]C++ STL priority queue not sorting correctly
我想要一個向量的Waypoint *對象,這些對象經過排序,以使距離最小的航點位於隊列的頂部。
這是我的比較類:
class WaypointCompare {
public:
bool operator()(Waypoint* left, Waypoint* right) const {
return left->getDistance() < right->getDistance();
}
};
這是我初始化隊列的方式:
std::priority_queue<Waypoint*, std::vector<Waypoint*>, WaypointCompare> queue;
每當我更新航路點的距離時,我的隊列似乎都無法正確重新排序。 像本示例一樣,距離值最小的Waypoint對象是否不應該位於隊列的后部(頂部)(索引10)? 這是一些隊列調試的圖像,我注意到我認為是錯誤的:
我認為這可能與我對pq的sha昧理解有關,或者我正在初始化到HUGE_VAL的所有距離。
每當我更新航路點的距離時,我的隊列似乎都無法正確重新排序。
不,不會。 如果元素發生更改,隊列不會對其自身重新排序; 這樣做只會破壞順序。 您需要刪除並重新插入以影響訂購的方式更改的任何元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.