我对C++中的集合不太了解,所以如果我的问题有点愚蠢,那就轻松点我。C++ std :: map在未找到密钥时添加值
我目前有2地图
map<int, Segment*> varSeg;
map<Segment*, bool> rules;
所以VARSEG充满VAR的分配 - >段*的对象,并根据一些逻辑我试图填补规则映射使用类似以下循环。
for(...looping on some vars){
int segVar = getVar();
rules[varSeg[segVar]] = (segVar > 0);
}
但是,如果某segVar
是不是已经包含在varSeg
我遇到了一个怪异的行为。在varSeg
映射中创建了一个新条目,该映射的密钥为segVar
,该段的值为Null
。后来哪些原因导致了我的代码中的各种问题。
我的问题是为什么发生这种情况?是不是varSeg[segVar]
声明这里是一个读取声明?这是非常难以调试,因为我无法在我的代码中找到一个地方我正在向地图写入空值。那么你能解释我在这里做错了什么吗?
可能重复的[std :: map - 元素访问无例外,没有插入](https://stackoverflow.com/questions/19290780/stdmap-element-access-without-exception-and-without-insertion) – hobo
你认为'varSeg [segVar]'的值如果它没有*添加任何东西到地图上,你认为什么? – molbdnilo
实际上,我在代码中检查了它,但是由于一个小错误,检查后有时可能将值更改为负值,然后在搜索时它会添加映射为null的-ve键。 –