[英]C++ efficient way to map a group of integer variables to values
為了將一組整數變量映射到值( 例如,我有a1, a2, a3, a4, a5, a6
來確定值v
;這是一個映射,例如map<tuple<int, int, int, int, int, int>,VALUE_TYPE>
或map<struct{int, int, int, int, int, int},VALUE_TYPE>
),我們可以使用
我對這些方法的性能感到很好奇。 就我而言
問題是在我的情況下哪種方法效果更好?
如果選擇了struct或class鍵,是否有任何技巧可以使比較器更有效?
unordered_map是否更適合這種情況? 我應該如何計算鍵的哈希值?
對於解決方案的任何建議或評論,我將不勝感激。 也歡迎就更一般的情況進行討論。 提前致謝。
基本上:實施不同的解決方案,編寫性能測試程序並進行測量!
當然:
std::array<>
容器(也已經提供了用於比較的運算符)。 std::unordered_map<>
)比排序映射( std::map<>
)更快,但是當然僅在不需要使用部分鍵進行搜索時才可以使用。 另外,如果您的數字相對較小並且密鑰中包含很多數字,則考慮實現trie數據結構。 就像std::unordered_map
這將允許您在O(l)
時間訪問元素,其中l
是鍵的長度,但也將允許您以升序迭代地拋出所有值,並通過部分密鑰。 這里的問題是您的內存消耗將與字母大小成比例(當然,您可以將內部邊緣存儲在某些復雜的數據結構中,但這會對性能產生負面影響)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.