c++ map索引不存在的key可能导致的后果分析
今天调这个调了很久才发现这个问题,所以记录以下
测试代码
#includeusingnamespacestd; intmain() { map mp_int; map mp_string; map mp_char; mp_int[1]=10; stringa="abc",b="xzy",c="def"; mp_string[a]=b; mp_char['a']='b'; cout<<"正常索引"< OUTPUT
正常索引
110
abcxzy
ab
访问不存在的键
0
变化
110
20
abcxzy
def
ab
c可以发现不存在的key在被索引后被添加到了map中并被赋予了一个默认值(一般的,整数为0,字符,字符串为空)
需要注意的是,只要发生了索引,就会导致如上错误,即使他们在if语句里
#includeusingnamespacestd; intmain() { map mp_int; map mp_string; map mp_char; mp_int[1]=10; stringa="abc",b="xzy",c="def"; mp_string[a]=b; mp_char['a']='b'; cout<<"正常索引"< 上面的代码会产生同样的结果
当你想要再次使用(循环)这些键的时候就会出错,你会使用到实际并不存在的key
避免方法是在索引前使用find或者count来判断键是否存在
到此这篇关于c++map索引不存在的key可能导致的后果分析的文章就介绍到这了,更多相关c++map索引内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。