我使用无序集来存储字符串。这里可以使不同的字符串具有相同的哈希值,因此我必须添加该哈希值的链表。这在C ++ stl unordered_set中是否受支持。
std::unordered_set<std::string, hashFunction> m_Dictionary;
我插入了“world:其中包含哈希值4,另一个词”HellO“,其哈希值为4,因此两者都应该去字典。我们如何才能实现这一点。
另一个要求是我想按字符串搜索,如果字典中存在字符串,它应该返回true。
此外,我想通过哈希值搜索,即4然后我应该输出为“world”和“HellO”。
这可以通过unordered_set或unordered_map来实现。我想使用STL哈希容器。
基本上我想使用字符串和哈希值进行搜索。如果哈希值有多个字符串,那么我们必须使用该哈希值打印所有字符串。我正在寻找示例代码我们如何实现这一目标。
我知道我们可以通过使用STL哈希容器来实现这一点,我想知道这可能与STL哈希容器有关。
感谢您的帮助。
答案 0 :(得分:0)
哈希容器已经支持具有相同哈希的对象。基本上,它们都被推入子列表并进行线性搜索,因此如果你的哈希很差,它会更加昂贵。您无法在stl。
中按哈希值进行搜索如果你真的需要使用哈希值,那么你需要将一个包装器放在一个由整数索引的unordered_multimap中,其中你的包装器已经散列到密钥,这将在同一个密钥上存储多个值。您可以使用equal_range()返回一对覆盖公共密钥的迭代器。