密钥为2的幂的快速映射(C ++)

时间:2016-06-06 09:47:04

标签: c++ data-structures hashmap

我有一小组正整数(大约10个数字),每个都是2的幂。

如何尽快将每个号码映射到其他号码?

这里有两个可行的解决方案但是,考虑到问题的简单性(以及我有多少键),它们看起来都是不必要的迟缓(我错了吗?):

完全避免映射问题,例如,用一个带有对的结构替换我的整数可能是最快的解决方案,但它会使我的大部分代码复杂化,所以我不是愿意这样做。

1 个答案:

答案 0 :(得分:6)

不要计算任何东西。你不能比低级缓存中的10个int比较做得更好。

只需要一个包含值的向量并运行一个循环来查找所需数字的索引,并使用索引在另一个向量中查找数据的重置。

为了提高性能,如果密钥组合在一起,那么您可以更好地利用处理器缓存。然而,如果你有一对对象或类似的东西,它不会慢得多。你应该尝试做一个基准测试,看看你是否真的需要最后一滴性能,或者你是否可以牺牲一点性能来简化数据结构。