[英]Multiple keys Hash Table (unordered_map)
我需要使用多個鍵(int 類型)來存儲和檢索哈希表中的單個值。 我會使用多個鍵來索引單個項目。 我需要快速插入並查找哈希表。 順便說一句,我不允許在實現中使用 Boost 庫。
我怎么能那樣做?
如果您的意思是兩個整數形成一個鍵,那么unordered_map<std::pair<int,int>, value_type>
。 如果您想通過多個鍵索引同一組數據,請查看Boost.MultiIndex 。
如果您的容器的鍵由多個int
的組合組成,您可以使用boost::tuple作為您的鍵,以封裝int
而無需您做更多的工作。 如果您的關鍵int
子組件的數量是固定的,則此方法成立。
最簡單的方法可能是將指針/索引映射到列表中的元素。
不過,這里還需要更多細節,您是否需要支持刪除? 元素是如何設置的? 你可以使用 boost::shared 指針嗎? (如果您需要支持刪除,則很有幫助)
我假設在這種情況下值對象很大,或者有其他一些原因你不能簡單地在常規映射中復制值。
如果它始終是用於檢索的組合。
那么最好使用多個鍵形成單個復合鍵。
你也可以這樣做
將密鑰存儲為連接的整數字符串,例如
(int1,int2,int3) => data
使用更高的數據類型,例如 uint64_t,其中您可以添加單個值以形成鍵
// Refer comment below for the approach
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.