-1

かなり興味深いものを見つけたとき、私はstackoverflowのハッシュ関数を見ていました。const char* を size_t* にキャストしてから、size_t を逆参照する必要があります。これは、特定の精度にビットシフトされます。これは const char* に対して機能し、毎回同じ値を生成します。しかし、実際の文字列型を使用して代わりに c_str() を呼び出すと、生成される 2 つの値が一致しません。さらに、コードを実行するたびに、文字列は実行ごとに異なる値を生成します。なぜこれが起こっているのか誰にも分かりますか?

const string l = "BA";
const char* k = l.c_str();
const char* p = "BA";
cout << k << " " << *((size_t*)k) << endl;
cout << p << " " << *((size_t*)p) << endl;

実行 1:

BA 140736766951746
BA 7162260525311607106

実行 2:

BA 140736985055554
BA 7162260525311607106

元の質問: C++ ハッシュ テーブルに適したハッシュ関数はありますか?

4

3 に答える 3