我的stl地图有问题。最初我用这样的数据填充地图。
//loop
pair< int, int > xy (x,y);
currentMap.insert( make_pair(xy), value); //map< pair<int, int>, bool>
prevMap.insert( make_pair(xy), value);
// End Loop
然后我根据一些规则删除一个元素。
currentMap.erase( make_pair(xy) );
我稍后交换了两个地图对象。
prevMap = currentMap;
交换后,所有元素都被赋值为true。如果我搜索元素xy ... *编辑 - 我领先于自己。遗憾。
i = currentMap.find( make_pair(xy) );
return i->second; // Always true after swap.
真相总会评估为真。初始化地图会将bool值设置为true吗?我可以使用false来初始化所有bool。
感谢。
答案 0 :(得分:1)
您无法将地图的值初始化为任何内容。您只能将值与键一起插入。如果您想在缺少密钥时返回false,那么您的上一个代码段应如下所示:
i = currentMap.find( make_pair(xy) );
if (i != currentMap.end())
return i->second;
return false;