C++ 中的 hash_map (unordered_map)是使用哈希表來存儲鍵值對的數據結構。當發生哈希沖突時,通常有兩種方式來處理:
鏈地址法(Separate chaining):在這種處理方法中,哈希表的每個桶(bucket)都是一個鏈表,當發生哈希沖突時,新的鍵值對會被插入到該鏈表中。這樣不同的鍵值對可以共享同一個桶,從而解決哈希沖突。
開放地址法(Open addressing):在這種處理方法中,當發生哈希沖突時,會嘗試找到下一個可用的位置來存儲新的鍵值對。其中包括線性探測、二次探測、雙重哈希等不同的探測方法。
在 C++ 的 hash_map 中,默認使用的是鏈地址法來處理哈希沖突,即每個桶都是一個鏈表。你也可以在創建 hash_map 時指定自定義的哈希函數和相等比較函數來處理哈希沖突。