基本上SplPriorityQueueclass是使用max heapalgoritm 的堆.
我不明白为什么在文档中应该是a prioritized queue,因为a queue是一个FIFO集合(先进先出) - 但是因为SplPriorityQueue它依赖priority variable于比较函数,为什么它是一个队列?
为什么班级不仅仅是一个SplPriorityCollection?!
受Mark Baker的启发评论我测试了比较功能的行为,当所有项目的优先级相同时,结果表明具有相同优先级的集合不是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";
}
Run Code Online (Sandbox Code Playgroud)
输出:
A G F E D C B
Run Code Online (Sandbox Code Playgroud)