C++map你真的懂了么?关于key值相同,map会怎么做,覆盖?判断key存在否方法

本文探讨了C++中map处理key值相同的情况,指出当key值相同,使用insert()不会覆盖,而[]=操作会覆盖。介绍了map中判断key存在的count()和find()函数,并讨论了直接使用map[key]的风险。同时,文章提到了map的数据结构为树形,而非数组,insert()并未保证数据位置。
摘要由CSDN通过智能技术生成

很早之前看过map的用法,大致会用,后来学了数据结构,我告诉自己,会map了,,,某场面试,面试官的一个问题,让我emm…,anyway,既然有不足,就查缺补漏~

1.问题:当map插入数据时,如果key值相同,value值是覆盖么?
答:如果key在map里面有的话,不会覆盖之前的value,一般先判断之前有没有数据(见4.),有的话,先删除,再去添加。还有一种方法,可以通过value = map[key],利用[]=来实现覆盖,进行数据的更新。

2.代码:

#include <iostream>
#include <string>
#include <map>

using namespace std;

/* 测试map的插入覆盖特性*/
int main()
{
   
	map<int, string> m;
	m.insert(make_pair(1, "Lixin1"));
	m.insert(pair<int, string>(2, "Lixin2"));
	m.insert(pair<int, string>(3, "Lixin3"));
	cout << "befor insert key=1, value = " << m[1] <
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值