2016-09-13 2 views
0

Ich bin verwirrt, wie ich MurmurHash3_x86_128() aufrufen sollte, wenn ich viel Schlüsselwert habe. Der murmurhash3-Code kann https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp gefunden werden. Methodendefinition ist unten angegeben.C++ MurmurHash3 gibt den gleichen Wert für andere Schlüssel

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

Ich übergebe verschiedene Schlüssel Wert mit einer for-Schleife wie unten gezeigt, aber immer noch der Hash-Wert Rückkehr ist gleich. Wenn ich die for-Schleife entferne und den einzelnen Schlüsselwert übergebe, ist der Wert anders. Was mache ich falsch ?

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

Sollte nicht das erste Argument 'key' anstelle von' key' sein? – Jeremy

+0

@ Jeremy Sorry Tippfehler. Ich benutze den Schlüssel selbst. – rombi

Antwort

3

Die Linie

cout << hash_otpt << endl; 

emittiert die Adresse von hash_otpt, nicht seinen Inhalt.

Verwandte Themen