一个普遍被问到的问题是我们是否应该使用 unordered_map 或 map 来加快访问速度。这个问题最常见(相当古老)的答案是:如果您想直接访问单个元素,请使用 unordered_map 但如果您想迭代元素(很可能以排序方式)使用 map。
在做出这样的选择时,我们不应该考虑密钥的数据类型吗?由于一种数据类型(比如 int)的哈希算法可能比其他(比如字符串)更容易发生冲突。
如果是这种情况(哈希算法很容易发生冲突),那么即使直接访问我也可能会使用 map,因为在这种情况下,unordered_map 映射的 O(1) 常数时间(可能是大量输入的平均值)是即使对于相当大的 N 值,也超过 lg(N)。