我正在寻找使用排序整数数组Key查找整数值的最快解决方案。
Keys是整数数组,其长度固定为3,每个数组都已排序 值是一个整数。
我的数据保证只有一个或两个排序的数组具有相同的内容。每个数组都有一个唯一的索引。
我正在尝试找到匹配的数组对。
我的想法是使用字典(我在C#中进行原型设计并将转向C ++)
对于每个数组,我会查看字典并查看它是否已存在。如果是,我将其从字典中删除。如果我没有在字典中找到它,那么它既可以是单例,也可以是匹配对中的第一个,所以我将它添加到字典中。
我的问题是 - 给出非常具体的数据保证,最好的容器是什么 - 考虑到速度是我的主要关注点?此外,任何关于适当(快速)散列函数或比较排序整数数组函数的建议都将受到赞赏。
答案 0 :(得分:2)
当您使用C ++时,请迁移到此
http://sparsehash.googlecode.com/svn/trunk/doc/dense_hash_map.html(项目here。)
这是我遇到的最快的hashmap实现之一。
同时,对于C#,等价物将是这样的:http://msdn.microsoft.com/en-us/library/xfhwa508.aspx我想有更快的字典实现可用,但由于C#不是最终的容器,它应该做得很好。
您可能想要考虑在项目中包含berkeleydb。它非常快,并且在数据集增长时管理存储。它也得到了各种平台的支持。