网上关于C ++标准库的std :: unordered_map 的讨论是琳琅满目的。关于其性能和用途的争论似乎永无止境。但是,很少有人注意到std :: unordered_map 的不足之处。在本文中,我们将探讨这种数据结构的“不好”之处。

首先,让我们看看std :: unordered_map 的使用。它是一个散列表,用于存储键值对。理论上,散列表应该提供常数时间的插入,查找和删除操作。然而,在实际情况下,由于内存碎片和哈希冲突等问题,std :: unordered_map 的性能可能会大打折扣。

此外,由于std :: unordered_map 是一个动态数据结构,它的大小是可以动态扩展和收缩的。这意味着在插入或删除元素时,它可能会重新分配内存,这可能导致性能下降。

另外,std :: unordered_map 中的元素并不是连续存储的,而是散列存储在不同的槽中。这样一来,对std :: unordered_map 的遍历操作可能会比较低效,因为需要不断地跳转到不同的槽中。

综上所述,std :: unordered_map 在某些情况下可能表现不佳。如果您关注性能和内存占用,您可能需要考虑使用其他数据结构来代替它。在选择数据结构时,请务必权衡好每种数据结构的优缺点,以选择最适合您需求的那一种。

希望通过本文的讨论,您对std :: unordered_map 的“不好”之处有了更深入的了解。让我们一起努力,不断学习和提升!

详情参考

了解更多有趣的事情:https://blog.ds3783.com/