7年前vectorのイテレータを回してる最中に、要素追加するとエラーになります。false;}virtualvoidObj_Draw(){return;}virtualvoidObj_Clear(){return;}};Obj_Main()内で要素が追加されたりします。実行時にエラーがでて困ってます;;こういう構築の仕方はよくないのでしょうか?アドバイスをくださると幸いです。肝心の要素追加している部分のソースコードがないのでなんとも言えないですが、イテレータ操作中にpush_backなどするとイテレータが破壊される可能性があります。内部に一括確保した領域を保持しています。この領域が足りなくなるときに、新しくより広大な領域を確保し、既存の要素をそちらへコピーします。その後、古い領域は解放されてなくなります。(内部の具体的な実装はコンパイラ次第ですが、大体の動作はこのような感じです)。この挙動から、「要素を追加したときには、既存の要素のアドレスが変わり得る」という重要な点に気付きます。従って、イテレータが指し示していた先も不正な場所になってしまう可能性があります。すべて破棄しなければなりません。解決策として、一時的なvectorを別に用意してそちらに要素を追加していき、後でマージするという方法があります。肝心の要素追加している部分のソースコードがないのでなんとも言えないですが、イテレータ操作中にpush_backなどするとイテレータが破壊される可能性があります。イテレータ操作中にpush_backをしていました。ソースはポインタを受け取って追加しているだけです。解決策として、一時的なvectorを別に用意してそちらに要素を追加していき、後でマージするという方法があります。質問している内容と添付しているコードの内容が一致していません。要素を削除しているコードではなく、追加しているコードを貼るべきでしょう。追加前にreserveすることでイテレータの破壊を防止することができます。7年前なんとなく思うことなのですが,Obj_Main関数が色々とやり過ぎていませんか。「オブジェクトが存在するかどうかの確認」と「それ以外の処理」は分離できないのでしょうか。分離できるのであれば,分離した方が見通しがよくなると思いますが。m_ObjPt.end());と,削除自体は一行になります。m_ObjPt.end());のようになりますが。shared_ptrが絡んだときのnot1とmem_fnとbindの使い方がよくわからない......ラムダ式より面倒になりそうな予感しかしない......。質問している内容と添付しているコードの内容が一致していません。要素を削除しているコードではなく、追加しているコードを貼るべきでしょう。1;//無敵時間を減らすm_FlameCount++;//毎フレームカウントreturnm_Flag;}MovePattern内で敵弾オブジェクトや、エフェクトオブジェクトが生成されます。MovePatternは行動パターンの関数をいれます。);}}Bullet->nwayでオブジェクトが追加されます。内部でNewObjEntryが呼ばれます。追加前にreserveすることでイテレータの破壊を防止することができます。reserveという手がありましたか、参考にさせていただきます。m_ObjPt.end());と,削除自体は一行になります。m_ObjPt.end());のようになりますが。ミクプラは自由にリンクできます。