ホームページ > バックエンド開発 > C++ > C の順序付けされていないコンテナーでカスタム型の `std::hash::operator()` を特殊化するにはどうすればよいですか?

C の順序付けされていないコンテナーでカスタム型の `std::hash::operator()` を特殊化するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-05 15:33:14
オリジナル
337 人が閲覧しました

How Can I Specialize `std::hash::operator()` for Custom Types in C   Unordered Containers?

順序付けされていないコンテナーのユーザー定義型の std::hash::operator() を特殊化

std:: でユーザー定義のキー型をサポートするにはunowned_set<キー>および std::unowned_map を使用するには、operator==(Key, Key) とハッシュ ファンクターを指定する必要があります。

std::unowned_set::operator() を特殊化してこれを実現できます。

C 標準ドラフト N3242 §20.8.12 によると[unord.hash] および §17.6.3.4 [hash.requirements]、およびさまざまなリソースを参照した後、専門化次の方法の std::hash::operator() が正しい唯一のメソッドです:

namespace std {
  template <> struct hash<Foo>
  {
    size_t operator()(const Foo &amp; x) const
    {
      /* your code here, e.g. "return hash<int>()(x.value);" */
    }
  };
}
ログイン後にコピー

これにより、名前空間 std に特殊化を追加でき、機能を拡張するための推奨される方法です。ユーザー定義型の標準型。

以上がC の順序付けされていないコンテナーでカスタム型の `std::hash::operator()` を特殊化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート