2016-09-13 80 views
0

我很困惑我應該如何調用MurmurHash3_x86_128()當我有很多關鍵值。 murmurhash3代碼可以找到https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp。方法定義如下。C++ MurmurHash3返回相同的值爲不同的密鑰

void MurmurHash3_x86_128 (const void * key, const int len, 
        uint32_t seed, void * out) 

我使用for循環傳遞不同的鍵值,如下所示,但散列值返回值仍然相同。如果我刪除循環並傳遞個別鍵值,那麼值是不同的。我究竟做錯了什麼 ?

int main() 
{ 
uint64_t seed = 100; 
vector <string> ex; 
ex.push_back("TAA"); 
ex.push_back("ATT"); 

for(int i=0; i < ex.size(); i++) 
{ 

uint64_t hash_otpt[2]= {}; 

cout<< hash_otpt << "\t" << endl; 
const char *key = ex[i].c_str(); 
cout << key << endl; 
MurmurHash3_x64_128(key, strlen(key), seed, hash_otpt); // 0xb6d99cf8 
cout << hash_otpt << endl; 


} 

return 0; 
+0

第一個參數不應該是'key'而不是'* key'嗎? – Jeremy

+0

@Jeremy對不起,錯字。我正在使用密鑰本身。 – rombi

回答

3

cout << hash_otpt << endl; 

被髮射地址的hash_otpt,而不是其內容。

相關問題