C++ 中的 hash_map (unordered_map)是使用哈希表来存储键值对的数据结构。当发生哈希冲突时,通常有两种方式来处理:
链地址法(Separate chaining):在这种处理方法中,哈希表的每个桶(bucket)都是一个链表,当发生哈希冲突时,新的键值对会被插入到该链表中。这样不同的键值对可以共享同一个桶,从而解决哈希冲突。
开放地址法(Open addressing):在这种处理方法中,当发生哈希冲突时,会尝试找到下一个可用的位置来存储新的键值对。其中包括线性探测、二次探测、双重哈希等不同的探测方法。
在 C++ 的 hash_map 中,默认使用的是链地址法来处理哈希冲突,即每个桶都是一个链表。你也可以在创建 hash_map 时指定自定义的哈希函数和相等比较函数来处理哈希冲突。