Hash 这里需要哈希表吗?

Hash 这里需要哈希表吗?,hash,Hash,我正在尝试决定是否应该使用某种哈希表。我将拥有大量字符串格式的数据 我将有许多字符串,这些字符串将归入类别,但具有相同的键值来访问它们 例如,如果一些字符串属于动物类别,我会使用字符串动物作为键,但我会有许多类似下面的示例: 动物犬 动物猫 等等 然后可能还有另一个人打电话来 人汤姆 人乔 还有儿子 所以我想搜索动物或人,然后列出每个值,这样搜索人就会返回tom和joe 可以有多个相同值的键吗?我已经很久没有想过要吃杂烩了 杂烩对这个有好处吗?如果是这样,Boost还是STL更好 谢谢 如果这没

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

我将有许多字符串,这些字符串将归入类别,但具有相同的键值来访问它们

例如,如果一些字符串属于动物类别,我会使用字符串动物作为键,但我会有许多类似下面的示例:

动物犬

动物猫

等等

然后可能还有另一个人打电话来

人汤姆

人乔

还有儿子

所以我想搜索动物或人,然后列出每个值,这样搜索人就会返回tom和joe

可以有多个相同值的键吗?我已经很久没有想过要吃杂烩了

杂烩对这个有好处吗?如果是这样,Boost还是STL更好

谢谢


如果这没有意义,我可以添加更多细节。是的,哈希映射支持多个键作为其定义状态。键在内部转换为唯一的索引。理想的情况是拥有所有不同的钥匙,但除非钥匙固定,否则这是很难实现的。 在您的情况下,您为什么不选择“动物”和“人”作为键,是否有限制?
在这种情况下,您可以使用一个键来标识动物(狗、猫、骆驼、鸟……)列表:animal,person也是如此。

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

我假设这是C++特定的,因为你提到了Boost和STL。散列映射在我所知道的大多数语言中使用,而不仅仅是C++。我认为,动物是一把钥匙,人是另一把钥匙,诸如此类……有意义吗?奇怪的是,自从上大学以来,我从未实现过哈希,我正在努力记住它们是如何工作的。我读了一些boost的东西,但它们似乎有点混乱。谢谢,我解决了这个问题,但我甚至不记得我做了什么。