簡體   English   中英

多鍵哈希表(unordered_map)

[英]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 指針嗎? (如果您需要支持刪除,則很有幫助)

我假設在這種情況下值對象很大,或者有其他一些原因你不能簡單地在常規映射中復制值。

如果它始終是用於檢索的組合。

那么最好使用多個鍵形成單個復合鍵。

你也可以這樣做

  1. 將密鑰存儲為連接的整數字符串,例如

     (int1,int2,int3) => data
  2. 使用更高的數據類型,例如 uint64_t,其中您可以添加單個值以形成鍵

    // Refer comment below for the approach

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM