This documentation does not mention whether this is a min-heap or a max-heap.
SplPriorityQueue クラス
(PHP 5 >= 5.3.0)
導入
SplPriorityQueue クラスは、優先順位つきキューの主要な機能を提供します。 ヒープを使用して実装しています。
クラス概要
/* メソッド */
__construct
( void
)
}目次
- SplPriorityQueue::compare — 要素の優先順位を比較し、ヒープ内の適切な位置に置く
- SplPriorityQueue::__construct — 新しい空のキューを作成する
- SplPriorityQueue::count — キュー内の要素数を数える
- SplPriorityQueue::current — イテレータが指す現在のノードを返す
- SplPriorityQueue::extract — ヒープの先頭からノードを取り出す
- SplPriorityQueue::insert — キューに要素を挿入する
- SplPriorityQueue::isEmpty — キューが空かどうかを調べる
- SplPriorityQueue::key — 現在のノードのインデックスを返す
- SplPriorityQueue::next — 次のノードに移動する
- SplPriorityQueue::recoverFromCorruption — 破壊されたキューを復旧し、それ以降の操作をできるようにする
- SplPriorityQueue::rewind — イテレータを先頭に巻き戻す (何もしない)
- SplPriorityQueue::setExtractFlags — 取り出しモードを設定する
- SplPriorityQueue::top — キューの先頭のノードを取り出す
- SplPriorityQueue::valid — キューにまだノードがあるかどうかを調べる
Anonymous
14-Jan-2011 04:12
rajatn at rediff dot co dot in
30-Jul-2010 01:29
quick implementation of SPL Priority Queue:
<?php
class PQtest extends SplPriorityQueue
{
public function compare($priority1, $priority2)
{
if ($priority1 === $priority2) return 0;
return $priority1 < $priority2 ? -1 : 1;
}
}
$objPQ = new PQtest();
$objPQ->insert('A',3);
$objPQ->insert('B',6);
$objPQ->insert('C',1);
$objPQ->insert('D',2);
echo "COUNT->".$objPQ->count()."<BR>";
//mode of extraction
$objPQ->setExtractFlags(PQtest::EXTR_BOTH);
//Go to TOP
$objPQ->top();
while($objPQ->valid()){
print_r($objPQ->current());
echo "<BR>";
$objPQ->next();
}
?>
output:
COUNT->4
Array ( [data] => B [priority] => 6 )
Array ( [data] => A [priority] => 3 )
Array ( [data] => D [priority] => 2 )
Array ( [data] => C [priority] => 1 )
