php - SplMinHeap 或 SplMaxHeap 是否在逻辑上实现 Traversable 接口?
问题描述
我注意到SplMinHeap
orSplMaxHeap
实现了Iterator
接口,它实现了Traversable
接口,所以我可以使用iterator_to_array (Traversable $iterator) : array
orforeach
语法来迭代这两个类的任何实例。
SplMaxHeap extends SplHeap implements Iterator , Countable {
SplMinHeap extends SplHeap implements Iterator , Countable {
但是当我反复迭代 SplMinHeap/SplMaxHeap 的一个实例时,我在第一次迭代后得到了一个空数组。看起来第一次迭代打破了 SplMinHeap/SplMaxHeap 的内部结构。
<?php
$minHeap = new SplMinHeap();
$minHeap->insert(15);
$minHeap->insert(5);
$minHeap->insert(10);
foreach ($minHeap as $val) echo $val, PHP_EOL;
var_dump(iterator_to_array($minHeap)); // empty array
var_dump(iterator_to_array($minHeap)); // empty array
是的,我们可以像声明的类一样遍历/迭代这个数据结构,但只能遍历一次。合乎逻辑吗?
解决方案
推荐阅读
- python - QtWebEngine 没有属性 QWebView
- node.js - src 外部文件的符号链接 node_modules
- php - 如何在 PHP 中使用正则表达式获取其他两个字符串之间的字符串?
- nginx - Nginx 使用域名时不保留路径
- ios - 为不适用于 iPad 的单个视图控制器设置方向
- html - 如何使引导下拉菜单最初打开并且此后无法关闭
- javascript - 具有更深路径的库的流 libdefs
- c++ - tensorflow 和 tflearn c++ API
- vba - MS Access .Movenext / .moveprevious
- sql - Rails Active Records 同时使用最大值和最小值