C++ map使用的注意事项

本文详细介绍了C++标准模板库(STL)中的map容器的使用注意事项,包括如何正确检查key的存在性,避免直接使用map[key]可能引发的隐式插入问题,以及提供了高效的查找方法。同时对比了count和find两种查找方式的效率,推荐使用find方法。

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

C++ map注意事项

1、在map中,由key查找value时,首先要判断map中是否包含key。

    如果不检查,直接返回map[key],可能会出现不易发现的问题。如果map包含key,没有问题,如果map不包含key,就会在map中插入一个key的元素,value取默认值(0),返回value。也就是说,map[key]不可能返回null。

2、map提供了两种方式,查看是否包含key,m.count(key),m.find(key)。

m.count(key):由于map不包含重复的key,因此m.count(key)取值为0,或者1,0表示不包含,1表示包含。

m.find(key):返回迭代器,判断是否存在。

3、对于下面的场景,存在key就使用,否则返回null,有下面两种写法:

 if(map.count(key)>0)
 {
     return map[key];
 }
 it = map.find(key);
 if(it!=map.end())
 {
     return it->second;
 }

这里需要注意:前一种方法很直观,但是效率差很多。因为前面的方法,需要执行两次查找。因此,推荐使用后一种方法。

4、对于STL中的容器,有泛型算法find(begin,end,target)查找目标,map还提供了一个成员方法find(key)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值