<?php $h = new SplMaxHeap(); // errors try { $h->extract(); } catch (RuntimeException $e) { echo "Exception: " . $e->getMessage() . "\n"; } $h->insert(1); $h->insert(2); $h->insert(3); $h->insert(3); $h->insert(3); echo $h->count() . "\n"; echo $h->extract() . "\n"; echo $h->extract() . "\n"; echo $h->extract() . "\n"; echo $h->extract() . "\n"; echo $h->extract() . "\n"; echo $h->count() . "\n"; echo "--\n"; $b = 4; $h->insert($b); $b = 5; $h2 = clone $h; echo $h->extract() . "\n"; echo $h2->extract() . "\n"; ?> ===DONE=== <?php
$heap->insert('5'); $heap->insert('4'); // $heap = new SplPriorityQueue(); // insert($value, $priority) // 优先队列插入新值 //$heap->insert('A', '3'); //$heap->insert('B', '1'); //$heap->insert('C', '2'); //$heap->insert('D', '5'); //$heap->insert('E', '4'); // isEmpty() // 判断该堆是否为空 $heap->isEmpty(); // count() // 获得堆值的数量 $heap->count(); // key() // 返回当前节点的索引值 $heap->key(); // valid() // 判断堆中还是否有其他节点 $heap->valid(); // rewind() // 返回首节点,在堆中是空操作。因为堆是二叉树,rewind始终会在当前位置而不移动 $heap->rewind(); // current() // 获得当前节点 $heap->current(); // next() // 指针移向下一个节点 $heap->next();
public function count() { return -parent::count(); }
<?php $data_provider = array(new stdClass(), array(), true, "string", 12345, 1.2345, NULL); foreach ($data_provider as $input) { $h = new SplMaxHeap(); var_dump($h->count($input)); }