Iteratoren: Kann das schief gehen?



  • ... wenn das zu erasende Element das erste ist? Oder knallt es nur, wenn ich den iterator dann dereferenziere? Problem: Ich muss 1 zurück gehen, sonst wird das nächste Element ausgelassen.

    typedef list<CObject*>::iterator iterator;
    
    	for(	iterator i = shadowObjects.begin();
    			i != shadowObjects.end();  ++i )
    	{
    		if( ... )
    		{
    			safeDelete((*i));
    			i = shadowObjects.erase(i);
    			--i;     // des do
    		}
    	}
    


  • Hat sich erledigt. 🙂

    typedef list<CObject*>::iterator iterator;
    
    	for(	iterator i = shadowObjects.begin();
    			i != shadowObjects.end(); )
    	{
    		if( ... )
    		{
    			safeDelete((*i));
    			i = shadowObjects.erase(i);
    		}
    		else
    			++i;
    	}
    

Anmelden zum Antworten