簡體   English   中英

std :: unordered_map <int,float>是否仍然需要對整數進行散列才能得到值?

[英]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.

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