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

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

Susan Sarandon
發布: 2024-11-30 00:35:14
原創
393 人瀏覽過

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

針對使用者定義類型專門化std::hash::operator()

利用具有使用者定義類型的無序容器鍵類型,例如std::unordered_set和std::unordered_map ,您通常需要定義operator==(Key, Key) 和一個雜湊函子。然而,對於此類類型,最好使用預設的雜湊函數,就像內建類型的情況一樣。

在研究各種資源(包括 C 標準)後,很明顯可以將 std::hash::operator() 專門用於使用者定義類型。以下程式碼片段舉例說明了這種專業化:

現在,讓我們解決提出的問題:

1.專業化的合法性

為std 命名空間添加專業化不僅是允許的,而且是鼓勵的。它允許擴展標準功能以支援用戶定義的類型。

2. std::hash::operator() 相容的版本

專門化std::hash::operator() 的正確文法如下:

3.便攜式解決方案

前面演示的 std::hash 專業化需要 C 11 相容性,編譯器可能無法普遍支援。為了提高可移植性,請考慮使用非標準命名空間,例如:

以上是如何為 C 中的自訂類型專門化 `std::hash::operator()` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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