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