2

我正在寻找使用排序整数数组键查找整数值的最快解决方案。

Keys 是整数数组,固定长度为 3,每个数组都经过排序。
值是一个整数。

我的数据保证只有一个或两个具有相同内容的排序数组。每个数组都有一个唯一的索引。

我正在尝试找到匹配的数组对。

我的想法是使用字典(我在 C# 中进行原型设计并将转向 C++)

对于每个数组,我会在字典中查找它是否已经存在。如果是,我将其从字典中删除。如果我在字典中没有找到它,那么它要么是单例,要么是匹配对中的第一个,所以我会将它添加到字典中。

我的问题是——然后对数据给出非常具体的保证,最好的容器是什么——因为速度是我最关心的问题?此外,任何关于适当(快速)散列函数或排序整数数组比较函数的建议将不胜感激。

4

1 回答 1

2

当你使用 C++ 时,迁移到这个

http://sparsehash.googlecode.com/svn/trunk/doc/dense_hash_map.html (项目在这里。)

这是我遇到过的最快的 hashmap 实现之一。

同时,对于 C#,等价物将是这样的:http: //msdn.microsoft.com/en-us/library/xfhwa508.aspx 我想有更快的字典实现可用,但由于 C# 不是最终的容器,它应该做得很好。

您可能想考虑在您的项目中包含 berkeleydb。它非常快,并且在数据集增长时也可以管理存储。它还支持多种平台。

于 2013-04-12T04:12:42.023 回答