• Iterator && IteratorAggregate区别


    这两个都是系统的扩展类。

    首先看下他两的实质:

    从上图可以得知,两者同样继承了Traversable类,两者是兄弟关系。

    以下是这两个类的所处的层级:

    iterable

      array

      Traversable

        Iterator

          Generator

        IteratorAggragate

    两者的区别:第一次遇到iteratorAggragate,容易误认为是Iterator。实质不是iterator,而是聚合了Iterator。

    为什么有了Iterator,还需要IteratorAggregate呢?

    1、方便使用,继承Iterator类,可以实现遍历的过程,比较繁琐,好处是可控性高,如prev(),next(),rewind()等方法。而IteratorAggregate就是傻瓜似的,如下图

    注意:generator是特殊的iterator,遍历一次后,不能rewindable,即指针不能回到开头。若函数的参数

    function test(iterator $obj);

    导致代码可能出现意外。

  • 相关阅读:
    1351. 统计有序矩阵中的负数
    剑指 Offer 56
    39. 组合总和
    1619. 删除某些元素后的数组均值
    1380. 矩阵中的幸运数
    216. 组合总和 III
    面试题 08.03. 魔术索引
    1518. 换酒问题
    Xcode多进程调试:WKWebView
    Xcode编译WebKit
  • 原文地址:https://www.cnblogs.com/huachengai/p/13255567.html
Copyright © 2020-2023  润新知