lösche element aus vector ".erase" führt zu crash
-
hi, ich habe den folgenden code um in einem vector aus vectoren (!!) ein element
zu löschen.
die innere schleife ist hier kurz als code ausgeführt:for(size_t objectCounter= 0;objectCounter< objectList.size(); objectCounter++){ if(!Check(packageCounter,objectCounter) ){ delete (m_vPackedRegio[packageCounter]->m_oListObjects[objectCounter]) ; m_vPackedRegio[packageCounter]->m_oListObjects.erase( &m_vPackedRegio[packageCounter]->m_oListObjects[objectCounter] ); objectCounter--; } }//end loop through objects in packages
wenn "check" feststellt das ein objekt im vector "ungülig" ist , wird es entfernt. leider crashed das program mitten in der ausführung von STL code.
template<class _InIt, class _OutIt> inline _OutIt _Copy_opt(_InIt _First, _InIt _Last, _OutIt _Dest, _Nonscalar_ptr_iterator_tag) { // copy [_First, _Last) to [_Dest, ...), arbitrary iterators for (; _First != _Last; ++_Dest, ++_First) --->> *_Dest = *_First; return (_Dest); }
ideen?
-
Warum dekrementierst du objectCounter in der Schleife?
Ersetz die operator[]-Aufufe durch vector::at, damit dir Bereichsüberschreitungen um die Ohren fliegen.
-
ich dekrementiere um die änderung durch das entfernen auszugleichen...
das "at" probier ich mal...