SplPriorityQueue::compare
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SplPriorityQueue::compare — 要素の優先順位を比較し、ヒープ内の適切な位置に置く
説明
priority1
と priority2
を比較します。
パラメータ
priority1
-
比較したい最初のノードの優先順位。
priority2
-
比較したい 2 番目のノードの優先順位。
戻り値
比較結果を返します。priority1
が priority2
より大きい場合は正の整数値、等しい場合は 0、
小さい場合は負の整数値となります。
注意:
同一の優先順位の要素が複数存在する場合は、 キューから取り出す際の順序が不定となります。
+add a note
User Contributed Notes 2 notes
Anonymous ¶
15 years ago
At this time, the documentation sais "Note: Multiple elements with the same priority will get dequeued in no particular order."
If you need elements of equal priority to maintain insertion order, you can use something like:
<?php
class StablePriorityQueue extends SplPriorityQueue {
protected $serial = PHP_INT_MAX;
public function insert($value, $priority) {
parent::insert($value, array($priority, $this->serial--));
}
}
?>
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google