因此VB6中的集合会跟踪每个对象的键,您可以通过其键来查找对象。
这是否意味着集合被实现为某种哈希表?我意识到你可以在一个集合中拥有多个具有相同键的项目,因此可以使用SOME SORT。
有人知道VB6集合应该代表什么类型的数据结构吗?
答案 0 :(得分:8)
据我所知,VBA Collection实现为链表(由Integer索引和For Each ... Next使用)和哈希表(由键使用)。正如Raven所说,你不能拥有同一把钥匙的多件物品。
<强>编辑:强>
@MarkJ:我应该为此付出代价: Hardcore Visual Basic第二版。由Bruce McKinney撰写,由Microsoft Press 1997 ISBN 1-57231-422-2发表
行情:
第191页 - 收集班
“简而言之,Collection类是CList类的加强版C ++版本。实际上,如果你将CList增强为双向链表并给它一些更多功能(并且可能使用哈希表来查找字符串键),你将拥有一个与Visual Basic提供的集合类很相似的集合类。“
第197页 - 表现
“事实上,Visual Basic开发人员告诉我,集合是双重链接列表(具有支持索引的附加功能)。”
现在,麦金尼更像是一名记者,而不是程序员,而不是开发人员。但是,他确实为微软工作,并在VB和VBA团队中建立了联系。他的解释对我有用。
顺便提一下,双向链表的原因是为了有效地在集合的开头和结尾插入项目。