ホームページ >バックエンド開発 >C++ >C++ でハッシュ検索アルゴリズムを使用する方法

C++ でハッシュ検索アルゴリズムを使用する方法

王林
王林オリジナル
2023-09-19 14:49:46901ブラウズ

C++ でハッシュ検索アルゴリズムを使用する方法

C でのハッシュ検索アルゴリズムの使用方法

ハッシュ検索アルゴリズムは、ハッシュを介してキーワードを使用する効率的な検索および保存テクノロジです。ハッシュ関数は固定関数に変換されます。 -length インデックス。このインデックスはデータ構造内の検索に使用されます。 C では、標準ライブラリのハッシュ コンテナーとハッシュ関数を使用して、ハッシュ検索アルゴリズムを実装できます。この記事では、C でハッシュ検索アルゴリズムを使用する方法を説明し、具体的なコード例を示します。

  1. ヘッダー ファイルと名前空間を導入する
    まず、C でハッシュ検索アルゴリズムを使用する前に、対応するヘッダー ファイルと名前空間を導入する必要があります。
#include <unordered_set>  // 哈希集合的头文件
#include <unordered_map>  // 哈希映射的头文件

using namespace std;
  1. ハッシュ セットの使用
    ハッシュ セット (unowned_set) は、順序付けされておらず、反復不可能なコンテナーです。ハッシュ コレクションを使用すると、高速な検索と重複排除を実現できます。

まず、ハッシュ コレクションを作成し、それに要素を追加します。

unordered_set<int> hashSet;
hashSet.insert(1);
hashSet.insert(2);
hashSet.insert(3);

次に、count() 関数を使用して、ハッシュ コレクションに要素が存在するかどうかを確認します。

bool exist = hashSet.count(2);

erase() 関数を使用して、コレクション内の要素を削除することもできます。

hashSet.erase(2);
  1. ハッシュ マップの使用
    ハッシュ マップ (unowned_map) は、キーと値のペアのコンテナーです。ハッシュ マップを使用すると、キー値が存在するかどうかをすばやく検索して判断できます。

まず、ハッシュ マップを作成し、それにキーと値のペアを追加します。

unordered_map<string, int> hashMap;
hashMap["apple"] = 3;
hashMap["banana"] = 5;
hashMap["orange"] = 2;

find() 関数を使用すると、ハッシュ マップ内の値を検索し、キーと値のペアが存在するかどうかを判断できます。

auto iter = hashMap.find("apple");
if (iter != hashMap.end()) {
    int value = iter->second;
    cout << "apple的值为:" << value << endl;
} else {
    cout << "未找到相关键值对" << endl;
}

erase() 関数を使用して、ハッシュ マップ内のキーと値のペアを削除することもできます。

hashMap.erase("banana");
  1. カスタム ハッシュ関数
    C 標準ライブラリでは、デフォルトのハッシュ関数でほとんどのニーズを満たすことができます。ただし、特定のシナリオでは、ハッシュ関数をカスタマイズする必要がある場合があります。

std::hash テンプレートをオーバーロードすることで、ハッシュ関数をカスタマイズできます。

// 自定义哈希函数
struct MyHash {
    size_t operator()(const string& str) const {
        size_t result = 0;
        for (char c : str) {
            result = result * 31 + c;
        }
        return result;
    }
};

unordered_map<string, int, MyHash> hashMap;

上記のコードでは、MyHash 構造内の Operator() 関数をオーバーロードして、文字列をハッシュ値に変換します。

  1. ハッシュ検索アルゴリズムの効率の最適化
    ハッシュ検索アルゴリズムの効率をさらに最適化するために、ハッシュ コンテナーの容量を調整したり、適切な負荷率を設定したりできます。
// 调整哈希容器的容量
hashMap.resize(100);

// 设置负载因子为0.5
hashMap.max_load_factor(0.5);

上記は、C でのハッシュ検索アルゴリズムの使用方法といくつかの最適化テクニックの紹介です。実際のアプリケーションでは、ハッシュ検索アルゴリズムは、プログラムの実行効率を大幅に向上できる効率的な検索および保存テクノロジです。ハッシュ検索アルゴリズムに興味がある場合は、さらに調査と実践を行って知識とスキルを拡大するとよいでしょう。

以上がC++ でハッシュ検索アルゴリズムを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。