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