我在我的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)
答案 0 :(得分:3)
显然,dense_hash_map
要求其散列函数的签名与MurmurHash2
提供的签名不匹配。您必须在自己的函数或函数中执行自己的“阻塞匹配”,以实现所需的签名并在内部使用提供的签名。但是,这需要能够确定与给定len
对应的const char *
,并且没有明显的答案。你打算在你的哈希映射中只存储“空终止的字符数组”,就像在老式的C“伪字符串”中一样,这样strlen
就足够了吗?或者,还有什么......?
也许使用std::string
(或者其他一些明确的C ++类型,具体取决于你想要实现的目标!)而不是那些可疑的const char *
s将是一个更好的开始!