要素を削除してクリーンアップするためにSTLマップをループしています。残念ながら、私のプログラムは+ + iter行でクラッシュします。私はマップ上でどのようにループしているかに間違ったことをしていますか?要素を削除するときにSTLマップのイテレータを使用するのに問題がある
std::map<string,BoneHierarchy* >::iterator iter = boneMap.begin();
while(iter != boneMap.end()) {
string playerName = iter->first;
boneMap[playerName]->clear();
boneQueue->push(boneMap[playerName]);
boneMap.erase(iter);
++iter;
}
イテレータは読んだり修正する必要があると思います。削除すると、進行中の反復が壊れてしまいます。 – kenny
http://stackoverflow.com/q/6438086/893693 – inf