1
我在我的C++代碼中實現谷歌密集散列映射。我想使用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)
嘿謝謝你的回覆。是的,strlen就足夠了。我也可以嘗試使用std :: string。但假設我們知道'len',你能告訴我如何執行「阻抗匹配」。我的意思是,我只是想能夠使用散列函數。我無法創建將使用MurmurHash2作爲散列函數的hash_map。謝謝! – aneesh 2009-12-23 11:23:47
您需要編寫自己的函數(只接受一個參數),並在內部調用MurmurHash2及其三個參數,並將該函數用作hash_map的「哈希函數」。您將永遠無法將三參數函數用作「散列函數」本身:'hash_map'需要一個具有ONE參數的散列函數,因此您必須自己編寫關於該約束的代碼並使用它。爲什麼這是一個問題? – 2009-12-23 16:43:42