首頁 > 後端開發 > C++ > 如何為 C 無序容器中的自訂類型專門化 `std::hash::operator()`?

如何為 C 無序容器中的自訂類型專門化 `std::hash::operator()`?

Linda Hamilton
發布: 2024-12-05 15:33:14
原創
339 人瀏覽過

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

為無序容器中的使用者定義類型專門化std::hash::operator()

支援std:: 中的使用者定義鍵類型unordered_set;和std::unordered_map ,您需要提供運算子==(Key, Key) 和雜湊函子。

雖然只寫std::unordered_set 會更方便;使用類型X 的預設哈希,就像內建類型一樣,您可以專門化std::hash::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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板