[WIP]Rust:BinaryHeap - halmk/Library GitHub Wiki

BinaryHeap (優先度付きキュー)

Overview

優先度付きキューについて

Code

  • max-heap
use std::collections::BinaryHeap;

let mut heap = BinaryHeap::new();

heap.push(1);
heap.push(5);
heap.push(2);

assert_eq!(heap.peak(), Some(&5));

assert_eq!(heap.pop(), Some(5));
assert_eq!(heap.pop(), Some(2));
assert_eq!(heap.pop(), Some(1));
assert_eq!(heap.pop(), None);
  • min-heap
use std::collections::BinaryHeap;
use std::cmp::Reverse;

let mut heap = BinaryHeap::new();

heap.push(Reverse(1));
heap.push(Reverse(5));
heap.push(Reverse(2));

assert_eq!(heap.peak(), Some(&Reverse(1)));

assert_eq!(heap.pop(), Some(Reverse(1)));
assert_eq!(heap.pop(), Some(Reverse(2)));
let el = heap.pop().unwrap();
assert_eq!(5, el.0);
assert_eq!(heap.pop(), Some(Reverse(5)));

Detail

rustcのバージョンが1.15.1の場合、std::cmp::Reverseが使えない。