C++的标准库关联容器map是不允许有key相同的键值对存在的。那么当key已经存在的情况下,我们再次插入相同的key,那么key的value会被覆盖吗?

测试代码:

测试结果:

从测试结果我们可以得出结论

从测试结果我们可以看出,使用insert()插入元素的方式并不能覆盖掉相同key的值;而使用[]方式则可以覆盖掉之前的值。为什么会出现这样的结果呢?

我们可以通过源码来找原因,在map的源码中,insert方法是这样定义的:

他调用_M_t.insert_unique(_x)方法,该方法会首先遍历整个集合,判断是否存在相同的key,如果存在则直接返回,放弃插入操作。如果不存在才进行插入。
而[]方式是通过重载[]操作符来实现的,它直接进行插入或覆盖。

最新文章

  1. vmware安装win7提示No CD-ROM drive to use:GCDROM not loaded
  2. css3中变形与动画(二)
  3. TinyFrame升级之一:框架概览
  4. Storm系统高可用性HA表现
  5. Codeforces Round #292 (Div. 1) B. Drazil and Tiles 拓扑排序
  6. JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用
  7. Linux 命令之 grep
  8. js闭包理解实例小结
  9. Android Handler消息传递
  10. [原]调试没有符号的 iOS 应用
  11. 阿里云API网关(1)服务网关的产品概述
  12. R语言:安装及使用
  13. 论Scrapy中的数据持久化
  14. JPA的merge对联合唯一索引无效(代码库)
  15. Centos服务器端口无法访问
  16. Django手册
  17. springboot系列十四、自定义实现starter
  18. hive优化之调整mapreduce数目
  19. thinkphp 3.2 加载第三方库 第三方命名空间库
  20. Java基础——Servlet(六)分页相关

热门文章

  1. ubuntu 上用virtualenv安装python不同版本的开发环境。
  2. [Git] 010 对 [Git 008] 的补充:实现 commit 不计次数
  3. SpringBoot(一) -- SpringBoot入门
  4. ZOJ-1610 线段树+两种查询方法(弥补我线段树区间填充的短板)
  5. 干货!小白入门Python数据科学全教程
  6. 基于 VirtualApp 结合 whale hook框架实现hook第三方应用
  7. vue修改Element的el-table样式
  8. PREPARE - 创建一个准备好的查询
  9. Xshell设置密钥登录确保Linux
  10. Memcache--02 源码安装nginx,php