Rustでプライオリティキューを扱う
RustにはC++でいうstd::priority_queue的なものとしてstd::collection::BinaryHeapが存在する。 使い方はC++や他言語のqueueと一緒だが、Option型を返すので少し気を使う必要がある。
以下サンプル
use std::collections::BinaryHeap; fn main() { let mut heap = BinaryHeap::new(); heap.push(3); heap.push(1); heap.push(5); // unwrap()を使うパターン。あまり行儀がよくない(競技プログラミングでは使うかもしれない) println!("{}", heap.pop().unwrap()); // => 5 // if letでアンラップするパターン。 if let Some(n) = heap.pop() { println!("{}", n) // => 3 } // パターンマッチ。 match heap.pop() { Some(n) => println!("{}", n), // => 1 None => unreachable!(), } }