多键哈希表(无序映射)

问题描述 投票:3回答:4

我需要使用多个键(int类型)来存储和从哈希表中检索单个值。我会使用多个键来索引单个项目。我需要快速插入并查找哈希表。顺便说一下,我不允许在实现中使用Boost库。

我该怎么做?

c++ hashtable key unordered-map
4个回答
3
投票

如果您是说两个整数构成一个键,则unordered_map<std::pair<int,int>, value_type>。如果要通过多个键索引同一组数据,请查看Boost.MultiIndex


2
投票

如果容器的密钥由多个int的组合组成,则可以使用boost::tuple作为密钥,以封装int,而无需您做更多的工作。如果您固定了关键int子组件的数量,则此设置成立。


1
投票

最简单的方法可能是将指针/索引映射到列表中的元素。

尽管这里需要更多详细信息,您是否需要支持删除?元素设置如何?您可以使用boost :: shared指针吗? (如果您需要支持删除,则非常有用)

我假设在这种情况下,值对象很大,或者有其他一些原因,您不能简单地在规则映射中复制值。


0
投票

如果始终是要检索的组合。

然后最好使用多个键来形成单个复合键。

您可以执行此操作

  1. 将键存储为整数的串联字符串,如

     (int1,int2,int3) => data
    
  2. 使用像uint64_t这样的较高数据类型,其中u中可以添加单个值以形成键

    // Refer comment below for the approach
    
© www.soinside.com 2019 - 2024. All rights reserved.