Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 04.09.2003, 13:09 Titel: Kann mir mal eben schnell jmd. sagen wie man mit "list& |
|
|
"erase" benutzt
Ja ich krieg irgendwie nur Fehlermeldungen, wenn ich erase auch nur irgendwie nutzen will. Ich sehe dass doch richtig, dass erase den gerade aktiven Iteratorzeiger loescht? Also den Eintrag auf den jeniger zeigt meine ich....
Danke. |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 04.09.2003, 14:05 Titel: |
|
|
Siehst du richtig, du kannst auch eine Sequenz löschen.
list.erase(it); // Element it wird gelöscht
list.erase(it,jt); // Elemente it-jt werden gelöscht
it (-jt) ist danach natürlich ungültig.
Du bekommst einen iterator auf das jeweils folgende Element zurück.
Christian |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 04.09.2003, 14:14 Titel: |
|
|
Dabei ist es noch wichtig zu sagen, dass erase nicht delete für dich aufruft(falls du mit Zeigern arbeitest..). _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 04.09.2003, 16:08 Titel: |
|
|
Ahm Hazel. Was meinst du damit?
Ich wuerds gerne so machen, das ich mit nem iterator durch die Liste gehe und bei einem bestimmten Objekt (resp. Zeiger darauf), dieses dann loeschen moechte....
Was muss ich da mit "delete" beachten? |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 04.09.2003, 16:39 Titel: |
|
|
Ein Code sagt mehr als 1000 Worte. ;)
Code: |
void CGarbageCollector::Update()
{
list<IGarbageCollected *>::iterator iter;
for(iter = m_Clients.begin(); iter != m_Clients.end(); )
{
if((*iter)->_DeleteMe)
{
IGarbageCollected * tmp = *iter;
++iter;
tmp->Kill(); // @X-FILES: Hier müsstest du delete tmp und erase aufrufen!!
}
else
{
++iter;
}
}
}
|
[Editiert] _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 04.09.2003, 18:24 Titel: |
|
|
Das soll bedeuten, dass die Objekte, die du dynamisch erzeugst und in die Liste einsortierst beim Aufruf von erase() zwar aus der Liste verschwinden, der reservierte Speicher aber nicht gelöscht wird.
Christian |
|
Nach oben |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 04.09.2003, 18:53 Titel: |
|
|
Ahhhh ok
Danke. Aber ich kanns eh ned so einfach machen wie ich erhoffte. Irgendwie weigert er sich zu loeschen und stuerzt ab mit Memory Leak... *seufz* |
|
Nach oben |
|
|
|