マップループのマップ中に、データを挿入する正しい方法は何ですか?私はこのようなマップ(およびその作業良い)の私のマップにいくつかのデータを挿入する1つの関数内で自分のコードの最初の瞬間にC++ - マップループのマップにデータを挿入
:この私のマップサイズ後
outMap[TYPE_REQ_USER][req->number] = req;
は1
です2番目の瞬間、他の関数の中で、私はマップを反復する必要があります。もし私がキーを見つけたら、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;
}
}
}
だから何が私の中に間違っていますループインサート?
EDIT 2
だから今、同じキー(TYPE_REQ_USER)のために私は2つの異なる要素を持つことができます。
最初の繰り返しで、私がやるので、私は、マップを反復処理し、私は、セグメンテーションフォールトエラーを抱えているキーの要素を削除しようとしているときに知っている:
qnRunningType_JobId.erase(itOutMap)。
しかし
地図の地図を関数に渡しますか?関数内で永続的な変更を加えないように、コピーしている可能性があります。 また、新しい値を追加するのではなく、誤って値を上書きしていますか? – hnefatl
Nop、マップのマップは、私は関数を持っているクラスに属しているため。だから、地図のマップを呼び出すだけ – RMRMaster
いくつかのコードを投稿してください - 2つの関数の関連するビットとそれらがメンバーであるクラス。 – hnefatl