【发布时间】:2015-03-08 21:14:03
【问题描述】:
我需要 C++ 中 unordered_map<string, int> 的散列函数。我需要根据内容对密钥进行散列,但它不应该取决于内容的顺序。
例如,在我的地图中,键是字符串,我需要“ac”、“ca”来生成相同的哈希值,但“bb”应该生成不同的哈希值。
我尝试对字符串的内容求和,但我意识到在这种情况下,“ac”和“bb”会生成相同的哈希值。
有类似的问题Does a string hash exist which can ignore the order of chars in this string,但也没有得到回答。
【问题讨论】:
-
在散列之前对字符串进行排序。这意味着您为
ac和ca散列ac,因此它们根据需要散列到相同的值,但bb(可能)散列到不同的值。 -
^ 他的意思是“对字符串中的字符进行排序”。
-
是的。现在对它们进行排序。但是如果有一个线性时间散列函数而没有任何额外的内存来完成这个任务,那就太好了
标签: c++ string hash unordered-map