在地圖循環的地圖期間,插入數據的正確方法是什麼?C++ - 在地圖循環的地圖中插入數據
在我的代碼中第一時刻一個函數裏面我一些數據插入到我的地圖是這樣的(和它的工作好)的:
outMap[TYPE_REQ_USER][req->number] = req;
這是我的地圖大小後爲1
在第二個時刻,在其他功能,我需要迭代地圖,如果我發現密鑰TYPE_REQ_USER
我需要添加一個新的數據到地圖的地圖。我嘗試這樣的,但在這之後我打印的地圖尺寸,我們表示,其1,而不是2(預期)
我的地圖循環的地圖中插入數據:
for (outMap_t::iterator itOutMap = outMap.begin(); itOutMap != outMap.end(); ++ itOutMap)
{
for (intMap_t::iterator itInMap = itOutMap->second.begin(); itInMap != itOutMap->second.end(); ++itInMap)
{
if (itOutMap->first == TYPE_REQ_USER)
{
//map insert
outMap[TYPE_REQ_USER][req->number] = req;
}
}
}
那麼,什麼是錯誤的,我循環插入?
編輯2
所以現在對於相同的鍵(TYPE_REQ_USER)1可以具有兩個不同的元件。
所以知道當我試圖重複的地圖和刪除我遇到的分段錯誤的關鍵要素,因爲在第一次迭代I做到:
qnRunningType_JobId.erase(itOutMap);
但在第二次迭代我有分割方法故障錯誤,因爲我試圖刪除itOutMap
但我們已經在第一次迭代中刪除..
您是否通過引用將地圖的地圖傳遞給函數?您可能正在複製它,以免在您的功能中進行持續更改。 另外,您是否錯誤地覆蓋了該值,而不是添加新的值? – hnefatl
Nop,因爲地圖的地圖屬於我有這個功能的類。所以它只調用地圖的地圖 – RMRMaster
發佈一些更多的代碼 - 兩個函數的相關位和它們所屬的類。 – hnefatl