【c++】std::map 和 std::unordered_map选用

本文探讨了C++中std::map(基于红黑树)和std::unordered_map(基于哈希表)的区别,包括它们在查找效率、内存消耗和应用场景上的优劣。哈希表提供常数级别的查找速度但内存占用高,红黑树查找时间为O(logN),内存使用更高效。在需要高效查询且内存允许的情况下,推荐使用std::unordered_map,若对内存敏感或需要有序数据,则std::map更为合适。文章还提到了物联网和网络安全产品对数据结构选择的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 红黑树的迭代器 效率高 ,时间复杂度 O(logN)
  • 哈希表的查找效率 高, O(1)
    • 红黑树查找和删除的时间复杂度都是O(logn),Hash查找和删除的时间复杂度都是O(1)。

为啥哈希表内存占用高?

  • 内存需要预先分配 用以存储散列表

红黑树

  • std::map对应的数据结构是红黑树。
  • 红黑树是一种近似于平衡的二叉查找树,里面的数据是有序的。
  • 在红黑树上做查找、插入、删除操作的时间复杂度为O(logN)。

哈希表

  • 而std::unordered_map对应哈希表,哈希表的特点就是查找效率高,时间复杂度为常数级别O(1),
  • 额外空间复杂度则要高出许多。
  • 所以对于需要高效率查询的情况,使用std::unordered_map容器,
  • 但是std::unordered_map对于迭代器遍历效率并不高。
  • 而如果对内存大小比较敏感或者数据存储要求有序的话,则可以用std::map容器。

红黑树和哈希表的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来不如迎风去

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值