好学校平台网站模板下载不了,wordpress顶部空白,html编辑工具有哪些,安徽建设信息网官网1. std::map 如果在添加元素前#xff0c;直接去取 key-value#xff0c;会怎样 #xff1f;
先说答案#xff0c;map 在添加元素前#xff0c;直接使用会给 key 添加默认的 value#xff01;
2. 问题背景
某项目代码报出个严重的bug#xff0c;具体现象是某个 map…1. std::map 如果在添加元素前直接去取 key-value会怎样
先说答案map 在添加元素前直接使用会给 key 添加默认的 value
2. 问题背景
某项目代码报出个严重的bug具体现象是某个 map 的变量还没有添加元素但是获取到数据。经过各种定位发现代码的一个bug就是 map 变量的使用问题
std::mapstd::string, int map_Test;int getKeyValue(std::string key)
{int value map_Test[key];if(map_Test.count(key) ! 0UL) {xxxx(value);}
}
上面代码发现问题没有 问题就是 map 在取值前要find 或者count不为0后才能取值。否则map 会给取得key赋值默认得值。比如上面得 就会给 赋值默认的值 0
3. 测试代码验证
#include iostream
#include map
#include stringusing namespace std;
int main()
{std::mapstd::string, int mTest;mTest[a];auto it mTest.find(a);if (it ! mTest.end()) {cout find map: mTest[a];}return 0;
}
上面代码编译运行结果如下 g map.cpp ./a.out find map: 0 4. 结论
c std::map 在取值前要先 find 到值或者count 值不为0才能取值。如果 map 没有添加key-value直接取 key会获取到默认类型的 value。