温馨提示×

c++ hash_map和unordered_map比较

c++
小樊
155
2024-07-17 16:34:52
栏目: 编程语言

C++中的hash_map和unordered_map都是用来存储键值对的数据结构,但它们在实现和性能上有一些区别。

  1. 实现方式:
  • hash_map是使用散列表实现的,它将键通过一个哈希函数映射到存储桶中,并使用链表或红黑树来解决哈希冲突。
  • unordered_map是使用哈希表实现的,它通过哈希函数将键映射到一个固定大小的桶中,并使用开放寻址法或链表解决哈希冲突。
  1. 性能:
  • hash_map在一些编译器(如Visual C++)中是标准库的一部分,但在一些编译器中可能需要额外的库。

  • unordered_map是标准C++中的一部分,因此在所有支持C++11标准的编译器中都可以使用。

  • 在C++11标准中,unordered_map比hash_map更加高效,因为它使用了更加现代化的哈希表实现,并且在解决冲突时性能更好。

  • 在C++17标准中,hash_map已被废弃,建议使用unordered_map。

综上所述,建议在C++中使用unordered_map而不是hash_map,因为unordered_map在性能和标准支持上都更好。

0