首頁 > 後端開發 > C++ > 為什麼 `std::unordered_map` 使用開放雜湊?

為什麼 `std::unordered_map` 使用開放雜湊?

Barbara Streisand
發布: 2024-12-05 06:08:11
原創
823 人瀏覽過

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

std::unordered_map 的實現

透過對C 標準的分析,很明顯std::unordered_map 的實作必須使用一種稱為開放散列的方法,也稱為單獨連結。該方法由一系列存儲桶組成,每個存儲桶持有一個鍊錶的頭部,這可以實現高效迭代,而無需繞過空存儲桶。

開放式散列的選擇是有意為滿足 C 中概述的特定性能要求標準。首先,預設的最大負載因子設定為 1.0,這表示只要大小超過儲存桶計數 1.0,表就會調整大小。其次,保證表不會被重新散列,除非它的成長超出了該負載因子。這些要求使得開放雜湊成為必要,因為當負載因子因過度衝突而接近 1 時,封閉雜湊變得不切實際。

雖然有些人認為開放雜湊並不是適用於所有用例的最有效方法,但它仍然是一個合理的選擇由於其可靠的衝突處理、對不同大小的鍵/值類型的適應性以及在沒有性能的情況下處理大量插入和刪除的整體效率,因此適合一般用途

因此,std::unordered_map利用開放式雜湊來滿足指定的效能要求,並且由於其多功能性和效率,對於大多數應用程式來說仍然是一個可靠的選擇。

以上是為什麼 `std::unordered_map` 使用開放雜湊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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