2014-01-28 32 views
0

我期待在unordered_map中存儲unordered_set作爲關鍵是好主意,或者我應該使用std :: set來存儲一些數據,然後使用std :: map來存儲std ::設爲鍵。哪個更適合性能/查找?是unordered_set作爲key存儲在unordered_map

任何建議將有助於

回答

0

與大量的數據結構與性能有關的問題時,準確的答案將取決於你的數據集。
考慮到你只對查找性能感興趣,小數據集通常會傾向於使用容器的有序版本,其中「數據集」表示密鑰類型中的平均元素數(set與unordered_set) ,以及外部地圖類型(地圖與無序地圖)的(set,value_type)項的數量。順便說一下,沒有什麼能夠阻止你混合有序和無序的容器,比如unordered_map,value_type>
Still,要想100%確定哪個容器更好,唯一的方法就是用你的實際數據進行分析。

考慮到這一點,這裏有一些更多的細節:

  • 外側容器,有一個很好的機會,使用unordered_map會提供更好的查詢性能,基於哈希容器的普通特性。但是,這有一個微妙的影響,它取決於密鑰容器的哈希小於運算符和函數的比較性能。
  • 對於密鑰容器,查找性能通過的相對性能影響容器的低於操作者(如果你的外容器是一個地圖)或它的散列函數(如果你的外容器是unordered_map)。

我會嘗試發佈一些實際的測試以便稍後進行測量。

相關問題