[英]C++ Priority Queue with Struct
我在Struct中使用Priority Queue
我的結構是下面的節點:
struct Node{
int level;
int bound;
int total;};
我的優先級隊列如下:
std::priority_queue<Node> pq;
我想做的是將優先級隊列(pq)排序為Node.bound的值, 以使bound為最大的Node對象位於優先級隊列的頂部。
我發現我必須重載方法'operator'
所以我做了如下
bool operator<(Node const& lhs, Node const& rhs) {
return lhs.bound < rhs.bound;}
我重載方法后,PQ排序節點對象,但也有一些經常例外271268267261,268,249,255,260,即246256 271是PQ的頂部值。
我該怎么辦才能解決這種情況? 我想如果解決這個問題,我就能完美解決我的問題!
優先級隊列將頂部元素(即將彈出的元素)保留為第一個元素。 其他元素的順序不確定。
我敢打賭,默認實現是在幕后使用堆結構,以使其盡可能高效。 這就是為什么元素似乎按隨機順序排列的原因。
請注意,這就是為什么std::priority_queue
接口僅允許您pop()
元素,而不提供對隊列中元素的隨機訪問的原因。
附加說明 :優先級隊列的順序由第三個模板參數定義。 如果未定義,則默認為std::less
,默認情況下將使用operator<
進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.