バイナリ ヒープにフロートを設定したい。具体的には、最小ヒープを実装したい。
フロートはサポートOrd
されていないようで、そのままでは使用できません。それらをラップする私の試みは、これまでのところ失敗しています。ただし、それらをラップできれば、最小ヒープOrd
を効果的に作成するような方法で実装することもできるようです。BinaryHeap
私が試したラッパーの例を次に示します。
#[derive(PartialEq, PartialOrd)]
struct MinNonNan(f64);
impl Eq for MinNonNan {}
impl Ord for MinNonNan {
fn cmp(&self, other: &MinNonNan) -> Ordering {
let ord = self.partial_cmp(other).unwrap();
match ord {
Ordering::Greater => Ordering::Less,
Ordering::Less => Ordering::Greater,
Ordering::Equal => ord
}
}
}
問題はpop
、それが最大ヒープであるかのように値を返すことです。
最小ヒープとして値を入力するBinaryHeap
には、正確に何をする必要がありますか?f64