执行map.erase()函数后如果直接cout的话,size会正常显示,但是用到了下标之后就会增加,是因为用下标显示时当键不存在,会默认创建了一个键值对,但是值为空。
而且输出的时候a.size和下标在一起输出的话就会改变a.size的值,应该是因为cout的原因,它会从后往前计算,先用到了下标a[1],a[5],size+2,然后输出size=3。
cout的顺序看下边这个博客
cout输出流执行顺序问题
#include#include

执行map.erase()函数后如果直接cout的话,size会正常显示,但是用到了下标之后就会增加,是因为用下标显示时当键不存在,会默认创建了一个键值对,但是值为空。
而且输出的时候a.size和下标在一起输出的话就会改变a.size的值,应该是因为cout的原因,它会从后往前计算,先用到了下标a[1],a[5],size+2,然后输出size=3。
cout的顺序看下边这个博客
cout输出流执行顺序问题
#include#include