C++における定数31を使用したハッシュ関数の実装方法


#include <iostream>
#include <string>
unsigned int hashFunction(const std::string& key) {
    unsigned int hash = 0;
    unsigned int prime = 31; // 定数31を使用
    for (char c : key) {
        hash = hash * prime + c; // 定数31を乗算してハッシュ値を計算
    }
    return hash;
}
int main() {
    std::string key = "Hello, World!";
    unsigned int hashValue = hashFunction(key);
    std::cout << "Hash value: " << hashValue << std::endl;
    return 0;
}

上記のコードは、与えられた文字列の各文字を定数31と乗算し、ハッシュ値を計算しています。ハッシュ値はunsigned int型で表され、一意の値を生成します。

このハッシュ関数は、文字列の長さや内容に基づいてハッシュ値を生成します。同じ文字列に対しては常に同じハッシュ値が生成されるため、ハッシュテーブルやデータベースの索引など、データの高速な検索や識別に使用することができます。

この方法以外にも、さまざまなハッシュ関数の実装方法が存在します。例えば、SHA系列やMD5などの暗号学的ハッシュ関数も利用することができます。選択するハッシュ関数は、使用目的やセキュリティ要件に応じて慎重に選択する必要があります。

以上が、C++において定数31を使用したハッシュ関数の実装方法です。