2011-05-30 103 views
0

我對Windows很新。在我與WMI合作的過程中,我看到沒有使用術語iterator,而是enum或enumurator已用於相同的目的。他們真的有迭代器嗎?或者他們用enum或enum,EnumVariant等代替術語,迭代器......或者我錯過了關於迭代器和enumurator的一些事情。據我所知傳統上,enum這個術語與迭代器不同。我錯了嗎 ?enumurator或迭代器?

回答

0

術語枚舉器經常用作迭代器的同義詞。

enum或enumeration是完全不同的東西。

0

枚舉既是一個事物(一個可能的值列表)和一個動作(逐個列出每個項目)。 Windows API使用這兩個術語,依靠上下文來區分它們。

作爲一般規則,其名稱中帶有「Enum」的函數和接口名稱意味着枚舉,例如, EnumWindows意味着枚舉窗口和IEnumUnknown(一個COM接口)意味着枚舉未知的[對象]。

Windows API沒有單枚舉方法。 EnumWindows在內部實現循環,並通過處理函數反覆調用回來,而IEnumUnknown要求調用者使用Next()函數編寫循環。

因此,在Windows上,枚舉器是遍歷元素列表的問題的一大類解決方案。

迭代器是枚舉器的C++標準庫概念。選擇「迭代器」而不是「枚舉器」可能是爲了避免與現有的枚舉語言概念混淆。與Windows不同,C++標準庫迭代器的概念非常明確:所有迭代器都像指針一樣工作;所有迭代器都需要調用者編寫循環等.C++標準庫中有幾類迭代器,它們允許以線性方式,相反或隨機方式訪問元素。