3

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

我怎么能那样做?

4

4 回答 4

4

如果您的意思是两个整数形成一个键,那么unordered_map<std::pair<int,int>, value_type>. 如果您想通过多个键索引同一组数据,请查看Boost.MultiIndex

于 2010-09-25T17:39:21.150 回答
2

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

于 2010-09-25T17:46:37.070 回答
1

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

这里需要更多细节,您需要支持删除吗?元素是如何设置的?你可以使用 boost::shared 指针吗?(如果您需要支持删除,会很有帮助)

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

于 2010-09-25T17:35:53.610 回答
0

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

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

你也可以这样做

  1. 将密钥存储为连接的整数字符串,例如

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

    // Refer comment below for the approach
    
于 2010-09-25T19:14:04.033 回答