看到有些代码,用中括号来查找map, 其实在map中,中括号已经被重载为有不存在即插入的功能。
于是如果查找的key不存在,则map中会增加很多垃圾数据。
测试代码:
std::map<int, std::string> mapStr;
mapStr[1] = "I am String!";
printf("size of mapStr is %d\n", mapStr.size());
std::string &strTest = mapStr[1];
printf("size of mapStr is %d, string is %s\n", mapStr.size(), strTest.c_str());
std::string &strTestnew = mapStr[2];
printf("after new, size of mapStr is %d\n", mapStr.size());
printf("the new element is %s\n", mapStr[2].c_str());
输出结果:
size of mapStr is 1
size of mapStr is 1, string is I am String!
after new, size of mapStr is 2
the new element is