返回正確的值我有一個std::unordered_map<std::string, int> map;
如何標準:: unordered_map從水桶
然後插入噸的元素融入到這一點,但字符串鍵都是唯一的。
是否可能出現以下情況,以及如何處理?
map[x] = 5;
map[y] = 3;
讓我們假設x
和y
是不同的字符串,但它們產生的相同的散列,所以5和3被放置在同一個桶中。
當我們嘗試使用map[x]
檢索值時,地圖如何返回正確的值5?哈希x
將給桶與兩個元素5,3,但我不知道它是如何得到正確的值,沒有密鑰本身進行比較。
我錯過了什麼?
你曾經寫過一個哈希表實現嗎? – WhozCraig
@WhozCraig不,我沒有。 –
當然,地圖必須將密鑰與值一起存儲,而不僅僅是散列值。如果只是因爲'map.begin() - > first'必須返回密鑰。所以一旦進入合適的存儲桶,它就會在那裏進行常規搜索。 –