倒序优先队列

Reverse order Priority Queue

有谁知道在 Rust 中是否可以颠倒优先级队列中的顺序? 当我查看队列时,我希望收到最低的 i32。但是,它似乎默认 returns 最高 i32.

编辑

这是我正在使用的包:docs.rs/priority-queue/1.2.0/priority_queue

根据 crate(包)的 documentation

我认为您应该使用 DoublePriorityQueue 而不是 PriorityQueue,因为它向队列中的 peek 提供最高值或最低值。分别使用 peek_maxpeek_min

查看他们在 documentation 中提供的代码片段:

use priority_queue::DoublePriorityQueue;

let mut pq = DoublePriorityQueue::new();

assert!(pq.is_empty());
pq.push("Apples", 5);
pq.push("Bananas", 8);
pq.push("Strawberries", 23);

assert_eq!(pq.peek_max(), Some((&"Strawberries", &23)));
assert_eq!(pq.peek_min(), Some((&"Apples", &5)));

pq.change_priority("Bananas", 25);
assert_eq!(pq.peek_max(), Some((&"Bananas", &25)));

for (item, _) in pq.into_sorted_iter() {
    println!("{}", item);
}

除非你需要从两端访问它,否则使用std::cmp::Reverse应该是最有效的解决方案。 (例如 PriorityQueue<i32, Reverse<i32>>.push(x, Reverse(x))