2010-10-17 20 views
0

我遇到了stl map的問題。最初我用這樣的數據填充地圖。c + + 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嗎?

謝謝。

回答

1

您無法將地圖的值初始化爲任何值。您只能隨鍵一起插入值。如果你想在丟失密鑰時返回false,你的最後一段代碼應該看起來像這樣:

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

Woops。我在帖子中犯了一個錯誤。感謝您接收它chrisaycock:S – sdk900 2010-10-17 03:57:08

+0

我剛剛根據您的文章在編輯之前嘗試過。感謝您的提示,但唉,交換後仍然有問題。我相信它可能是其他地方在我的代碼... – sdk900 2010-10-17 04:46:00

+0

其實chrisaycock這確實解決了我的問題。你知道我爲什麼被拒絕嗎?我意識到我的問題最初有錯誤...無論如何感謝堆。我要去睡覺了。 – sdk900 2010-10-17 05:32:09