0

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

4

2 回答 2

1

枚举器是一种标记值的方式。如果您有一个整数容器,则可以为可能的值定义一个枚举。记住命名值比记住数字更容易,例如想象一下,如果你认识的每个人都没有名字,而是被赋予了一个唯一的数字。会更难记住。

迭代器是允许您遍历容器的对象。你一步一步地迭代它。一些容器很容易单步执行(如连续数组),但其他容器则不然(如链表,其中每个元素可以随机分散在整个内存中,或二叉树,其中可能有不同的可能顺序来单步执行数据)。迭代器允许您遍历容器而不用担心这些细节。

至于生成器,我对它们不熟悉,所以我会从维基百科给你留下这句话:

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

于 2013-01-04T17:34:16.867 回答
0

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

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

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

于 2013-01-04T17:31:49.373 回答