【问题标题】:Is a Hash table needed here?这里需要哈希表吗?
【发布时间】:2011-11-11 20:22:31
【问题描述】:

我正在尝试决定是否应该使用某种哈希表。我将拥有大量字符串格式的数据。

我将有许多属于类别的字符串,但具有相同的键值来访问它们。

一个例子是如果一些字符串属于动物类别,我会使用字符串动物作为键,但我会在下面有很多这样的例子:

动物狗

动物猫

等等。

然后可能是另一个被叫的人

人汤姆

人乔

和儿子一起

所以我想搜索动物或人,然后列出每个值,所以搜索人会返回 tom and joe。

你能有多个相同值的键吗?很久没有想到哈希了。

哈希对此有用吗?如果是这样,Boost 或 STL 更好吗?

谢谢

如果这没有意义,我可以添加更多细节,这是我的要求。

【问题讨论】:

  • 我认为这是特定于 C++ 的,因为您提到了 Boost 和 STL。
  • 哈希映射用于我所知道的大多数语言中,而不仅仅是 C++ ;)

标签: hash


【解决方案1】:

是的,哈希映射支持多个键作为其定义状态。键在内部转换为唯一的索引。理想的情况是拥有完全不同的密钥,但除非密钥是固定的,否则这很少能实现。 在您的情况下,您为什么不选择“动物”和“人”作为键是否有限制? 在这种情况下,您可以拥有一个由单个键标识的动物(狗、猫、骆驼、鸟......)列表:动物,人也是如此。

【讨论】:

  • 我的想法是,动物是一把钥匙,人是另一把钥匙,依此类推……有意义吗?奇怪的是,自从大学以来,我从来没有实现过哈希,我正在努力记住它们是如何工作的。我读了一些提升的东西,但它们似乎有点令人困惑。
【解决方案2】:

尝试为每个键实现哈希表结构,创建与其相关的值列表。因此,当您在哈希表中搜索值时,只需显示与该键关联的列表。希望有帮助!

【讨论】:

  • 谢谢,我解决了这个问题,但我什至不记得我做了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
  • 2021-06-22
相关资源
最近更新 更多