基本上SplPriorityQueue
類是一個堆使用max heap
算法。爲什麼SplPriorityQueue類是一個隊列(概念上)
我不明白爲什麼在文件被認爲是一個prioritized queue
,因爲queue
是FIFO集合(先入先出) - 而是因爲它SplPriorityQueue
比較函數依賴的priority variable
,爲什麼它是一個隊列?
爲什麼這個班不只是一個SplPriorityCollection
?!
- >SplPriorityQueue documentation
通過馬克·貝克評論啓發我測試比較功能的行爲時,優先級是所有項目一樣,它竟然具有相同的優先級集合不一個FIFO
$objPQ = new SplPriorityQueue();
$objPQ->insert('A', 1);
$objPQ->insert('B', 1);
$objPQ->insert('C', 1);
$objPQ->insert('D', 1);
$objPQ->insert('E', 1);
$objPQ->insert('F', 1);
$objPQ->insert('G', 1);
foreach($objPQ as $val) {
echo $val . "\n";
}
輸出:
A G F E D C B
因爲(除非您指定不同的優先級)它是先進先出......並且在大多數情況下,您將爲所有事物指定相同的優先級... PriorityQueue和隊列之間的區別在於,您___擁有選項_以優先處理條目,以便某些___可以在其他人之前處理 – 2014-08-27 09:03:21
Thx 。我進行了測試,並且具有相同的優先級並不像FIFO。查看我編輯的問題。這是非常好的一點,我沒有這樣想,但它不適用。 – 2014-08-27 09:15:44
在這種情況下,您可能已經發現了一個錯誤:對於一個隊列,行爲應該如我所描述的....否則,您可能只是使用splheap – 2014-08-27 10:22:14