当前位置: 首页 > news >正文

C++中map和unordered_map的区别是什么?

1.map:

·底层:底层是红黑树。这是一种自平衡的搜索树;

·元素顺序:将元素按照键值的顺序存放;

·唯一性:不允许容器中出现键值相同的元素;

·时间复杂度:访问、插入和删除的时间复杂度都是O(log n);

·迭代器稳定性:由于底层是红黑树,所以无论进行什么操作迭代器指向的容器都不会发生改变。

2.unordered_map:

·底层:哈希表。通过哈希函数建立值与哈希表槽的唯一映射;

·元素顺序:容器中存放的元素没有顺序;

·唯一性:理论上哈希表不允许容器中出现相同的元素。如果发生哈希冲突,则会通过链表或快速寻址的机制解决;

·时间复杂度:查询操作的时间复杂度为O(1),删除或插入元素在最差情况下时间复杂度是O(n)。

·迭代器稳定性:当发生重哈希时,迭代器指向的元素可能会发生改变,即迭代器是不稳定的。

3.使用场景:

·当对容器内元素的顺序没有要求时使用unordered_map;

·当对容器内元素的顺序有要求时使用map。

相关文章:

  • Elasticsearch知识汇总之ElasticSearch部署
  • jenkins访问端口调整成80端口
  • OpenAI的“四面楚歌”:从营利到非营利,一场关于AGI控制权的革命
  • idea使用lombok错误,找不到符号,明明编译没问题,运行报错
  • list的使用及模拟实现
  • 玛格丽特鸡尾酒评鉴,玛格丽特酒的寓意和象征
  • 内存种类详解
  • create-vue搭建Vue3项目(Vue3学习2)
  • 使用BlockingQueue简化Java中的生产者-消费者问题
  • 逻辑越权--水平垂直越权(WEB漏洞)
  • 智能修复大模型生成的 JSON 字符串:Python 实现与优化
  • 从单机到生产:Kubernetes 部署方案全解析
  • Unity Editor 扩展:查找缺失的 Image Sprite
  • 【Windows 常用工具系列 22 -- vscode markdown preview 字体大小设置】
  • VSCode|IDEA|PyCharm无缝接入DeepSeek R1实现AI编程
  • 【Elasticsearch】在kibana中能获取已创建的api keys吗?
  • Jenkins忘记admin密码后的恢复步骤
  • 学习海康VisionMaster之间距检测
  • 数据中台产品功能介绍
  • 【区块链】Uniswap详细介绍
  • 过半中国上市公司去年都在“扩编”,哪些公司人效最高
  • 晒被子最大的好处,其实不是杀螨虫,而是……
  • 牧草之王苜蓿的江南驯化史
  • “五一”假期客流增加,多地提升铁路运力并强化服务
  • 三百余英国王室藏品,一览爱德华时代的优雅
  • 传奇落幕!波波维奇卸任马刺队主教练,转型全职球队总裁