【发布时间】:2010-11-21 08:09:31
【问题描述】:
当只有需要的功能时,我正在尝试决定使用哪种数据结构来存储键值对
- 插入
- 查找
具体来说,我不需要能够删除对,或遍历键/值/对。
键是整数元组,值是指针(引用等)。我只存储了分布在(许多)对象上的几百万对。
目前我正在考虑使用任一
- 哈希表
- kd 树
- b 树
我倾向于哈希表(O(1) 插入/查找时间),但我想确认我的倾向。
您会推荐哪种结构(上述结构或其他结构),为什么?如果您推荐一个哈希表,我应该为每个对象创建一个单独的表,还是只创建一个表并将对象的 id 作为键元组的一部分?
【问题讨论】:
-
kd-tree 是一种空间数据结构——在这种情况下使用它没有任何意义。你是说红黑树吗?
-
你将如何使用这个数据结构?您是预先完成所有插入,还是将它们与查找混合?您期望多少次查找与插入?键是唯一的吗?有多少个键(2^64?)。它们是如何分布的?
标签: language-agnostic data-structures hashtable b-tree kdtree