ヒープが保持できるアイテムの量を制限できるように、PHP の SplMinHeap を拡張しようとしています。問題は、最小値である必要がある最上位の要素にアクセスしようとすると、最大値が得られることです。これまでのコードは非常に単純です。
class MyHeap extends SplMinHeap {
public static $limit = 10;
public function compare($value1, $value2) {
return ($value1 - $value2);
}
public function myInsert($value) {
if ( $this->count() < self::$limit ) {
$this->insert($value);
} else {
var_dump($this->top());
}
}
};
1 から 15 の数字を挿入すると、1 5 回出力されると予想されますが、代わりに 10 が出力さmyInsert
れ$this->insert
ますparent::insert
。それが拡張されたものを使用するのかデフォルトのものを使用するのかわからなかったのでcompare
、切り替えました。
奇妙なことに、通常の SplMinHeap を使用して同じ数字を挿入すると、 を呼び出すと 1 が返されtop()
ます。
誰かが私が間違っていることを理解するのを手伝ってくれますか?