【问题标题】:enumurator or Iterator?枚举器还是迭代器?
【发布时间】:2011-05-30 10:56:19
【问题描述】:

我对 Windows 很陌生。当我使用 WMI 时,我看到没有使用术语 iterator 而是使用枚举或枚举器来实现相同的目的。他们真的有迭代器吗?或者他们用 enum 或 enum、EnumVariant 等替换术语迭代器......或者我错过了一些关于迭代器和枚举器的东西。据我所知,传统上术语枚举与迭代器不同。我错了吗?

【问题讨论】:

    标签: winapi enums iterator iteration


    【解决方案1】:

    枚举既是事物(可能值的列表)又是动作(遍历列表中的每个项目)。 Windows API 使用这两个术语,依靠上下文来区分它们。

    作为一般规则,名称中带有“Enum”的函数和接口名称表示枚举,例如EnumWindows 表示枚举窗口,IEnumUnknown(COM 接口)表示枚举未知[对象]。

    Windows API 没有单一的枚举方法。 EnumWindows 在内部实现循环并通过处理函数重复调用您,而 IEnumUnknown 要求调用者使用 Next() 函数编写循环。

    因此,在 Windows 上,枚举器是解决遍历元素列表问题的一大类解决方案。

    迭代器是枚举器的 C++ 标准库概念。选择 'iterator' 而不是 'enumerator' 可能是故意的,以避免与现有的枚举语言概念混淆。

    与 Windows 不同,C++ 标准库的迭代器概念定义得非常好:所有迭代器都像指针一样工作;所有迭代器都需要调用者编写循环等。C++ 标准库中有几类迭代器允许线性、反向或随机访问元素。

    【讨论】:

      【解决方案2】:

      术语枚举器通常用作迭代器的同义词。

      枚举或枚举完全是另外一回事。

      【讨论】:

        猜你喜欢
        • 2012-06-08
        • 1970-01-01
        • 2016-09-07
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-31
        • 2017-02-03
        相关资源
        最近更新 更多