【发布时间】:2016-12-08 07:34:05
【问题描述】:
为了将一组整数变量映射到值(假设我有 a1, a2, a3, a4, a5, a6 来确定一个值 v; 这是一个像 map<tuple<int, int, int, int, int, int>,VALUE_TYPE> 或 map<struct{int, int, int, int, int, int},VALUE_TYPE> 这样的映射),我们可以用
- 以整数为键的字符串
- 元组作为键
- 结构或类作为键
- 等等...
我对这些方法的性能很好奇。在我的情况下,
- 少插入,多查询
- 整数键的范围广泛但分布稀疏
- 时间更关心我,记忆更少
- 地图访问是最消耗资源的部分,因此即使是 10% 的加速也很重要
问题是哪种方式在我的情况下表现更好?
如果选择了结构或类键,是否有任何技巧可以使比较器更有效?
unordered_map 是否更适合这种情况?我应该如何计算键的哈希?
对于解决方案的任何建议或评论,我将不胜感激。也欢迎讨论更一般的情况。提前致谢。
【问题讨论】:
-
将变量映射到值?只需将值存储在其中。
-
一个 std::map 可以将整数映射到值。为什么要考虑字符串、元组或自定义类?将您的整数放入地图中。
-
Key 是多个整数,如 [x, y, z] 如果使用 3 个变量来确定值。我已经编辑了问题以消除歧义。@nvoigt @storyteller
-
在您的整数变量组
(a1, a2, a3, a4, a5, a6)中,每个变量ai的位置是否重要?(1, 2, 3, 4, 5, 6)和(3, 2, 4, 1, 6, 5)一样吗? -
订单很重要。 @sameerkn
标签: c++ dictionary std stdmap c++-standard-library