我正在尝试扩展 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());
}
}
};
myInsert
当我插入数字 1 到 15 时,我希望它打印 1 5 次,而不是打印 10。我还尝试扩展 insert 方法,使用$this->insert
与parent::insert
. 我只是不知道那会使用我的扩展版compare
还是默认版,这就是我切换它的原因。
奇怪的是,如果使用普通的 SplMinHeap 并插入相同的数字,我会在调用top()
.
谁能帮我弄清楚我做错了什么?