C++ Map相同key是否覆盖问题分析
2024-09-05 08:02:58
C++的标准库关联容器map是不允许有key相同的键值对存在的。那么当key已经存在的情况下,我们再次插入相同的key,那么key的value会被覆盖吗?
测试代码:
测试结果:
从测试结果我们可以得出结论
从测试结果我们可以看出,使用insert()插入元素的方式并不能覆盖掉相同key的值;而使用[]方式则可以覆盖掉之前的值。为什么会出现这样的结果呢?
我们可以通过源码来找原因,在map的源码中,insert方法是这样定义的:
他调用_M_t.insert_unique(_x)方法,该方法会首先遍历整个集合,判断是否存在相同的key,如果存在则直接返回,放弃插入操作。如果不存在才进行插入。
而[]方式是通过重载[]操作符来实现的,它直接进行插入或覆盖。
最新文章
- vmware安装win7提示No CD-ROM drive to use:GCDROM not loaded
- css3中变形与动画(二)
- TinyFrame升级之一:框架概览
- Storm系统高可用性HA表现
- Codeforces Round #292 (Div. 1) B. Drazil and Tiles 拓扑排序
- JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用
- Linux 命令之 grep
- js闭包理解实例小结
- Android Handler消息传递
- [原]调试没有符号的 iOS 应用
- 阿里云API网关(1)服务网关的产品概述
- R语言:安装及使用
- 论Scrapy中的数据持久化
- JPA的merge对联合唯一索引无效(代码库)
- Centos服务器端口无法访问
- Django手册
- springboot系列十四、自定义实现starter
- hive优化之调整mapreduce数目
- thinkphp 3.2 加载第三方库 第三方命名空间库
- Java基础——Servlet(六)分页相关
热门文章
- ubuntu 上用virtualenv安装python不同版本的开发环境。
- [Git] 010 对 [Git 008] 的补充:实现 commit 不计次数
- SpringBoot(一) -- SpringBoot入门
- ZOJ-1610 线段树+两种查询方法(弥补我线段树区间填充的短板)
- 干货!小白入门Python数据科学全教程
- 基于 VirtualApp 结合 whale hook框架实现hook第三方应用
- vue修改Element的el-table样式
- PREPARE - 创建一个准备好的查询
- Xshell设置密钥登录确保Linux
- Memcache--02 源码安装nginx,php