[英]Does std::unordered_map<int,float> still have to hash the integer to get to the value?
我想知道std::unordered_map< int, float >
仍然需要散列給定的整數來獲取值或者直接使用它。 我需要每秒快速執行此操作很多次,並且由於std::hash<int>
不能保證是身份函數,我將如何重新定義它? (顯然不使用STL並編寫我自己的容器是可能的,但我懷疑我寫的那些會更有效(可能更多,更慢))。 謝謝!
我想知道
std::unordered_map< int, float >
仍然需要散列給定的整數
是的,它確實。
我需要多次快速執行此操作
您是否完成了項目並目睹了這是它的瓶頸? 如果沒有,那么請注意,因為你可能最終成為過早優化的受害者!
我將如何重新定義它?
你必須編寫自己的代碼。 示例: 使用自定義類類型作為鍵的C ++ unordered_map ,您將使用struct Key { int value; };
struct Key { int value; };
。
我非常懷疑任何理智的編譯器都是以直通方式進行的。 即便如此,你還是要測試它是否有任何實際的有害性能影響(如果他們這樣做,他們可能有充分的理由 - 例如他們的哈希函數被設計為與他們的unordered_map一起工作)。 如果要強制執行散列函數,可以:
struct Key{
int value;
};
然后看看這個答案 ,看看如何使它與unordered_map一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.