生成器,枚举器,迭代器定义

时间:2013-01-04 17:26:13

标签: iterator generator enumerator

有人可以提供生成器,枚举器,迭代器术语的定义。似乎不同的语言使用这些任意,我想知道确切的差异。

2 个答案:

答案 0 :(得分:1)

枚举器是一种标记值的方法。如果您有一个整数容器,则可以为可能的值定义枚举。记住命名值然后记住数字更容易,例如想象一下,如果你认识的每个人都没有名字,而是给出一个唯一的数字。这将更难记住。

迭代器是一个允许您遍历容器的对象。你一步一步地遍历它。有些容器可以直接进行(就像一个连续的数组)但其他容器不是(就像一个链表,每个元素可以随机分散在整个内存中,或者二进制树,可能有不同的可能顺序来逐步执行数据) )。迭代器允许您遍历容器而不必担心这些细节。

至于发电机,我对它们并不熟悉,所以我将从维基百科上留下这句话:

  

在计算机科学中,生成器是一种特殊的例程,可用于控制循环的迭代行为。生成器与返回数组的函数非常相似,因为生成器具有参数,可以调用,并生成一系列值。但是,生成器不是一次构建包含所有值并一次返回所有值的数组,而是一次生成一个值,这需要更少的内存并允许调用者立即开始处理前几个值。简而言之,生成器看起来像一个函数,但行为类似于迭代器。

答案 1 :(得分:0)

维基百科提供了非常好的通用定义:

简而言之,迭代器是一个可以使用循环重复读取的类;生成器是一个函数,它通过逐个返回它的值来充当迭代器;枚举数是一种数据类型,包含可以在变量定义中使用的可能值列表,以强制它只包含其中一个值。

据我所知,这些术语的使用在语言之间非常一致,尽管语法不同(显然)。你见过什么让你很困惑?

相关问题