【问题标题】:c++ STL map copy setting boolean value to truec ++ STL映射复制设置布尔值为true
【发布时间】:2010-10-17 03:47:02
【问题描述】:

我的 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.

truth 将始终评估为 true。初始化地图会将布尔值设置为 true 吗?我可以将所有布尔值都设为 false 进行初始化吗?

谢谢。

【问题讨论】:

    标签: c++ stl map


    【解决方案1】:

    您不能将地图的值初始化为任何值。您只能将值与键一起插入。如果您想在缺少密钥时返回 false,您的最后一个代码 sn-p 应该如下所示:

    i = currentMap.find( make_pair(xy) );
    if (i != currentMap.end())
        return i->second;
    return false;
    

    【讨论】:

    • 糟糕。我在帖子中犯了一个错误。感谢您抓住它 chrisaycock :S
    • 我只是在编辑前根据您的帖子尝试了这个。感谢您的提示,但是交换后我仍然有问题。我相信它可能在我的代码中的其他地方......
    • 实际上 chrisaycock 这确实解决了我的问题。你知道我为什么被否决吗?我意识到我的问题最初有错误......无论如何,谢谢。我要去睡觉了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2015-04-20
    • 2012-07-08
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多