迭代器_ptr,什么是迭代器?

用户投稿 126 0

关于“迭代器_php”的问题,小编就整理了【3】个相关介绍“迭代器_php”的解答:

什么是迭代器?

迭代器(iterator)有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。

迭代器另一方面还可以集成生成器(generator)。有些语言将二者视为同一接口,有些语言如JavaScript则将之独立化。

迭代器原理详解?

原理是迭代器是对集合进行遍历,而每一个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样,那么就需要在每一个类中定义hasNext()和next()方法,这样做是可以的,但是会让整个集合体系过于臃肿,迭代器是将这样的方法向上抽取出接口,然后在每个类的内部,定义自己迭代方式。这样做的好处有二:第一规定了整个集合体系的遍历方式都是hasNext()和next()方法;第二代码有底层内部实现。

迭代器和生成器的区别?

迭代器与生成器的区别:

(1)生成器:

生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。

对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。

而且记录了程序执行的上下文。

生成器不仅“记住”了它的数据状态,生成还记住了程序执行的位置。

(2)迭代器

迭代器是一种支持next()操作的对象。它包含了一组元素,当执行next()操作时,返回其中一个元素。

当所有元素都被返回后,再执行next()报异常—StopIteration

生成器一定是可迭代的,也一定是迭代器对象

(3)区别:

①生成器是生成元素的,迭代器是访问集合元素的一中方式

②迭代输出生成器的内容

③迭代器是一种支持next()操作的对象

④迭代器(iterator):其中iterator对象表示的是一个数据流,可以把它看做一个有序序列,但我们不能提前知道序列的长度,只有通过nex()函数实现需要计算的下一个数据。可以看做生成器的一个子集。

1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方法和iter方法返回自己本身。对于string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的。在后台for语句对容器对象调用iter()函数,iter()是python的内置函数。iter()会返回一个定义了next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数。在没有后续元素时,next()会抛出一个StopIteration异常

2)生成器(Generator)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需要返回数据的时候使用yield语句。每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)

区别:生成器能做到迭代器能做的所有事,而且因为自动创建了__iter__()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当发生器终结时,还会自动抛出StopIteration异常

到此,以上就是小编对于“迭代器_php”的问题就介绍到这了,希望介绍关于“迭代器_php”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!