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...


Anmelden zum Antworten