簡體   English   中英

C ++ STL優先級隊列未正確排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM