2010-02-18 52 views
2

我有一个好奇的问题,我脑力激荡可能的解决方案。问题是这样的:我有很多输入(高达几千个不同的输入),它们在二维阵列中基本不同(阵列大小不一,从一号到几千号)。处理数组需要一些时间来初始化数据的函数,所以我想将函数/仿函数与数据一起缓存并将它们存储在地图中。C++,什么是散列数组的好方法?

现在,我该如何将原始数组转换为可用的散列表类型?我最初认为要将数组读入一个字符串并将字符串用作关键字。这是个好主意吗?你有更好的建议吗?

+0

您是否需要查找特定的密钥?我不确定在这里使用哈希表是如何在这里购买你的,如果你只是想在下一个数据集之后进行处理,这听起来像。 – Joe 2010-02-18 02:14:11

+0

@Joe是的,我确实需要查找键。相同的数据使用相同的函数处理10次或更多次。 – Anycorn 2010-02-18 02:18:45

+0

但是,您如何知道*您需要再次处理哪些设置?你从描述中不能理解的是,你如何知道你的逻辑需要重新检索哪个数据集? – Joe 2010-02-18 02:43:21

回答

2

这些数组是整数吗?如果是的话,只是用的东西是这样的

hash = (hash + (324723947 + a[i])) ^93485734985;

类似的事情会正常工作的字符串,如果你做的所有字符。 最后,您可能会退房extra libs here

+0

双精度,所以技术上他们可以是整数。 – Anycorn 2010-02-18 02:16:39

+0

然后它会完美地工作。我仍然会把它们整理为整数。 – BarsMonster 2010-02-18 02:17:32

+0

这个散列函数的冲突率是多少?我对此有点担心 – Anycorn 2010-02-18 02:20:40

相关问题