SplMaxHeap::compare() 是用於比較兩個元素的方法,用於 SplMaxHeap 類中的元素排序。它必須被子類實現,並且返回一個整數值表示兩個元素的相對順序。
以下是 SplMaxHeap::compare() 方法的詳細用法及示例:
用法:
abstract protected function compare ( mixed $value1 , mixed $value2 ) : int
引數:
- $value1:要比較的第一個元素。
- $value2:要比較的第二個元素。
返回值:
- 整數值,表示兩個元素的相對順序。如果 $value1 小於 $value2,則返回負數;如果 $value1 大於 $value2,則返回正數;如果 $value1 等於 $value2,則返回零。
示例:
class MyHeap extends SplMaxHeap {
protected function compare($value1, $value2) {
if ($value1 === $value2) {
return 0;
} elseif ($value1 < $value2) {
return -1;
} else {
return 1;
}
}
}
$heap = new MyHeap();
$heap->insert(5);
$heap->insert(3);
$heap->insert(8);
foreach ($heap as $value) {
echo $value . " "; // 輸出:8 5 3
}
在上面的示例中,我們建立了一個自定義的堆類 MyHeap,繼承自 SplMaxHeap。我們重寫了 compare() 方法來自定義元素的比較邏輯,使得堆中的元素按照降序排列。然後我們建立了一個 MyHeap 物件,並透過 insert() 方法插入了幾個元素。最後,透過 foreach 迴圈遍歷堆物件,按照降序輸出元素。