size_t hash(const std::string data) {
size_t h(0);
for (int i=0; i<data.length(); i++){
h = (h << (31-i)^(h >> i)^data[i]);
}
h = h%hashsize;
return h;
}
1
A
答えて
3
それは、TR1のために表向き適しstd::string
のハッシュ関数、およびC++ 11のstd::unordered_map<>
、std::unordered_set<>
などすなわちそれに使用するための所与std::string
用として一意-AS-可能size_t
値を作成しようとしハッシュテーブル
言われているように、それは貧弱なハッシュ関数です。 unordered_map<>
、unordered_set<>
などに付属する標準ライブラリの実装には、これよりも優れた実装を持つ標準ライブラリ文字列のためのハッシュ関数が組み込まれています。
EDIT:Bitwise operation:(応答してコメントへ)<<
は>>
は、ビット単位の右シフトであり、^
を簡単このWikipediaの項目に記載されているすべてがビット単位のXORである、左ビット単位のシフトです。
関連する問題
- 1. 誰かがこのコードスニペットの内容を伝えることができます
- 2. 誰かが私が間違っていることをどこに伝えることができますか?
- 3. 誰かがこのMSテキストが伝えようとしていることを説明できますか?
- 4. u_shortのヘッダーファイルですか?誰が私のヘッダファイルを伝えることができ
- 5. 誰でもこの関数を1行に書くのを助けることができますか?
- 6. 誰でもこのjscriptファイルの内容を伝えることができます
- 7. 誰も私にこのコードで何が間違っていると言うことができましたか?
- 8. javascript関数は、誰もがこのコードで間違っているものを教えてもらえます
- 9. 誰かが私にこのPythonコードで何が間違っていると教えてもらえますか?
- 10. 誰もがこのクエリと間違っているものを私に伝えることができます私は、クエリの問題
- 11. 誰でもこのSPARQL QUERYに何が間違っているのか教えてもらえますか?
- 12. こんにちは。誰でもこのコードで何が起こっているか教えてください。誰でもここで起こっていることを説明することができます
- 13. 誰かがこの行が何をしているのか説明できますか?このブログで
- 14. 誰かが私にこの答えを与えることができます:
- 15. 多分誰かが見逃しているものを見ることができます(デバッグケース、C++、関数ポインタ)
- 16. 誰でもこのhtmlの行が何をしているのか説明できますか?
- 17. 誰かがこのRegEx問題を手伝ってもらえますか?
- 18. 何人かが私になぜこれが質問であると伝えることができますか?
- 19. 誰かがこのjavascript関数が実行されない理由を教えてもらえますか?
- 20. 引数として何でもかけることができる関数
- 21. 誰かが私にこのJavaコードが何をしているのか説明してもらえますか?
- 22. AutoItを使用してJDKファイルを実行できません。誰もこのコードで何が間違っているか教えてもらえますか?
- 23. 誰かが私にこのコードの何が間違っているか教えてもらえますか?
- 24. jqueryの - 誰もがこれで間違っていたものを私に伝えることができれば、アレイ
- 25. 誰かがこのコードの何が間違っているのか教えてもらえますか?
- 26. return new Node(data)誰もこの関数が実際に返すものを教えてもらえますか?
- 27. 誰かがこの写真に何が間違っているか教えてもらえますか?
- 28. 誰でもWindows AzureのロールにTFS Buildのインストールに関するガイダンスを与えることができます
- 29. 誰かがこのコードの何が間違っているか教えてもらえますか?
- 30. 誰でもこのプログラムをVBScriptで閉じることができますか?
これはバグだと思います。 「31」とsize_tが一緒に使用されているのは、混在させようとしていた方法をミックスしていない可能性が高いことを示しています。 – ohmantics
それは、鉛筆や紙の仕事がたくさん必要になるでしょう。関数呼び出しのコンテキストは何ですか? – pjwilliams
これはネットのどこかで見つけられ、この 'h =(h <<(31-i)^(h >> i)^ data [i])を理解していません。 ' – Vijay