我一直在阅读 Eric Lippert's blog现在有一段时间了(非常好,你应该检查一下)和在他的一个评论中 posts ,他提到他无意索引一系列数字,而只是列举它们。
枚举和索引之间有什么区别,我到处都搜索过?在我的搜索过程中,当迭代被带入方程式时,我变得更加困惑?有人可以解释这 3 个概念,甚至可以举个例子吗?在您将其标记为欺骗之前,我已经看到了一些关于“迭代器与枚举器”的问题,但是我还没有看到正确的解释(因此出现了问题)。感谢您的帮助。
最佳答案
在这篇文章的评论中,Eric 回应了一项观察,即由于排列的大小呈指数增长,它很快就会超过 32 位表示的数字。 Eric 的答复是,他无意对排列进行索引,他的意思是定义一个编号方案以获得排列的序号。这就是为什么,他说,溢出 32 位不是他关心的问题之一:他的方法允许枚举,或者简单地“产生”,一些顺序的所有排列,如反对提供一种根据某种编号方案获得 N-th
排列的方法。
将此与 question about producing N-th
permutation without going through all the preceding ones 中讨论的问题进行对比: 在这里,作者想要对排列进行索引或给数字,因此整数的大小是他们关注的问题。
这是在上面链接的问题中讨论的索引排列的示例:
1 ABC
2 ACB
3 BAC
4 BCA
5 CAB
6 CBA
此索引方案可让您回答两个问题:
- 特定排列的数量是多少,例如,
BCA
? (是 4 个) - 什么是排列数
X
,比如 5? (它是CAB
)
这个问题可能比枚举所有排列更难,因为您需要生成一个编号方案。
关于c# - 枚举与索引与迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16495986/