麻烦使用哈希函数

时间:2009-12-22 06:40:45

标签: hash hashmap

我在我的C ++代码中实现了google的密集哈希映射。我想使用MurmurHash2(http://murmurhash.googlepages.com/)作为哈希函数。但这是问题所在。我已经尝试了很多,但似乎无法使哈希函数起作用。该示例显示了默认哈希函数的使用(hash< const char *>)。

dense_hash_map < const char * , int, hash < const char*>, eqstr> months;

我想用

替换hash< const char * >
unsigned int MurmurHash2 ( const char * key, int len, unsigned int seed)

1 个答案:

答案 0 :(得分:3)

显然,dense_hash_map要求其散列函数的签名与MurmurHash2提供的签名不匹配。您必须在自己的函数或函数中执行自己的“阻塞匹配”,以实现所需的签名并在内部使用提供的签名。但是,这需要能够确定与给定len对应的const char *,并且没有明显的答案。你打算在你的哈希映射中只存储“空终止的字符数组”,就像在老式的C“伪字符串”中一样,这样strlen就足够了吗?或者,还有什么......?

也许使用std::string(或者其他一些明确的C ++类型,具体取决于你想要实现的目标!)而不是那些可疑的const char * s将是一个更好的开始!

相关问题