C++ 中的 unordered_map 是使用哈希表(hash table)作为底层数据结构实现的。
哈希表是一种高效的数据结构,用于存储键值对,并且可以实现快速的查找、插入和删除操作。它通过将键映射到一个数组索引来实现快速访问,这个映射关系通常是通过哈希函数计算得到的。
在 C++ 中,unordered_map 使用哈希表来存储元素,每个元素都是一个键值对(key-value pair),键是唯一的,值可以重复。当插入一个元素时,会先计算键的哈希值,然后根据哈希值将元素存储在哈希表的对应位置。
具体来说,unordered_map 的底层数据结构通常是一个数组,数组的每个元素称为桶(bucket)。每个桶中存储了一个链表或者红黑树(在 C++11 中引入)结构,用于解决哈希冲突。当哈希冲突发生时,元素会被插入到对应桶的链表或者红黑树中,这样就可以保证在较低的时间复杂度内完成查找、插入和删除操作。
因此,unordered_map 使用哈希表作为底层数据结构,利用哈希函数将键映射到数组索引,然后使用链表或者红黑树来处理哈希冲突,从而实现快速的查找、插入和删除操作。