2013-01-11 46 views
0

我有大量的對象指針(讓我們稱之爲A)和一個較小的對象指針(M)的映射與索引A鍵。如何在迭代時更改std :: map元素?

雖然迭代M,我想交換映射的指針第二)與指針當前處於A.

該索引(第一次),在我有這樣的事情:

map<LONG, Object*>::iterator mit; 
for (mit = M.begin(); mit != M.end(); mit++) 
{ 
    if ((*mit).first != NO_ID) 
    { 
      Object* pTmp = pA->ReplaceObject((*mit).first, (*mit).second); 
      if (pTmp != NULL) 
      { 
       M.at((*mit).first) = pTmp; 
      } 
    } 
} 

這裏ReplaceObject首先獲得A [(* MIT)。首先對於回報,然後將A [(* mit).first]更改爲(* mit).second。

我映射的指針始終保持不變 - 儘管調試器似乎顯示更改正確發生。

我在做什麼錯?

+0

所以你想改變你的地圖排序的關鍵? –

+0

「我的映射指針保持固定不變 - 雖然調試器,似乎顯示更改」所以它是否在改變或不是?或者他們是兩個不同的東西? –

+0

這是一個撤銷/重做功能。我想改變地圖上的指針,看起來它已經工作(撤消),但是當我回到地圖(重做)指針仍然具有「舊」值,所以我的重做失敗。 – Kyudos

回答

0

一個偉大的'樹木爲木'時刻 - 我只是negelcting複製我的改變撤銷操作回撤消堆棧。一旦我停止尋找「錯誤」並且只是閱讀我的代碼,就很明顯! D'哦!

相關問題