我需要使用多个键(int类型)来存储和从哈希表中检索单个值。我会使用多个键来索引单个项目。我需要快速插入并查找哈希表。顺便说一下,我不允许在实现中使用Boost库。
我该怎么做?
如果您是说两个整数构成一个键,则unordered_map<std::pair<int,int>, value_type>
。如果要通过多个键索引同一组数据,请查看Boost.MultiIndex。
如果容器的密钥由多个int
的组合组成,则可以使用boost::tuple作为密钥,以封装int
,而无需您做更多的工作。如果您固定了关键int
子组件的数量,则此设置成立。
最简单的方法可能是将指针/索引映射到列表中的元素。
尽管这里需要更多详细信息,您是否需要支持删除?元素设置如何?您可以使用boost :: shared指针吗? (如果您需要支持删除,则非常有用)
我假设在这种情况下,值对象很大,或者有其他一些原因,您不能简单地在规则映射中复制值。
如果始终是要检索的组合。
然后最好使用多个键来形成单个复合键。
您可以执行此操作
将键存储为整数的串联字符串,如
(int1,int2,int3) => data
使用像uint64_t这样的较高数据类型,其中u中可以添加单个值以形成键
// Refer comment below for the approach