ホームページ >バックエンド開発 >C++ >`std::unowned_map` がオープン ハッシュを使用するのはなぜですか?

`std::unowned_map` がオープン ハッシュを使用するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-05 06:08:11825ブラウズ

Why Does `std::unordered_map` Use Open Hashing?

std::unowned_map の実装

C 標準の分析により、std::unowned_map の実装では次を使用する必要があることが明らかになります。これはオープン ハッシュとして知られる方法であり、セパレート チェーンとしても知られています。このメソッドはバケットの配列で構成され、各バケットがリンク リストの先頭を保持するため、空のバケットをバイパスすることなく効率的な反復が可能になります。

オープン ハッシュの選択は、C で概説されている特定のパフォーマンス要件を満たすために意図的に行われました。標準。まず、デフォルトの最大負荷係数は 1.0 に設定されています。これは、サイズがバケット数を 1.0 倍超えるとテーブルのサイズが変更されることを意味します。第 2 に、テーブルがその負荷係数を超えて増大しない限り、テーブルが再ハッシュされないことが保証されます。これらの要件により、過度の衝突により負荷係数が 1 に近づくとクローズド ハッシュが現実的ではなくなるため、オープン ハッシュが必要になります。

オープン ハッシュはすべてのユースケースにとって最も効率的な方法ではないと主張する人もいますが、依然として合理的な選択です。衝突の信頼性の高い処理、さまざまなサイズのキー/値タイプへの適応性、およびパフォーマンスを伴わない大量の挿入と削除の処理における全体的な効率により、一般的な用途に適しています。

したがって、std::unowned_map はオープン ハッシュを利用して指定されたパフォーマンス要件を満たすとともに、その汎用性と効率性により、ほとんどのアプリケーションにとって堅牢な選択肢であり続けます。

以上が`std::unowned_map` がオープン ハッシュを使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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