PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : List aus der STL


White_Shadow
2003-11-20, 21:30:48
Hallo,
isch hab da mal ne Frage ;). Also wenn ich ne Liste aus der STL angelegt habe und jetzt durch die Liste laufe (vorwärts wie rückwerts) dabei aber zwischendurch mal Elemente löschen will dann bekomme ich immer speicher zugriffsfehler bzw. immer Elemente die nicht (mehr) in der Liste sind. Kann es sein das das so net geht. Mal als beispiel:
l ist meine Liste
t mein iterator
Code-Auszug:

for(int i=0; i<10; i++,t++)
{
if(i%3==0)
{
l.erase(t);
t--;
//das geht auch net
// list<T>::iterator tmp=t;
//t--;
//l.erase(tmp);
/////////
}
}

Muss man den Iterator irgend wie upaten? oder gibts sonst irgendwie ne möglich keit so was zumachen, ansonsten müsste ich müsste ich mir extra noch nen Feldanlegen was ich schon bearbeitet habe und wo ich mich grad in der Liste befinde das is aber nen bissel umständlich!
thx im vorraus
White Shadow

zeckensack
2003-11-20, 23:00:44
list::erase
iterator erase(iterator it);
iterator erase(iterator first, iterator last);
The first member function removes the element of the controlled sequence pointed to by it. The second member function removes the elements of the controlled sequence in the range [first, last). Both return an iterator that designates the first element remaining beyond any elements removed, or end() if no such element exists.:)

Die Lösung des ganzen sieht dann so aus:list<T>::iterator t=l.begin(); //oder so ähnlich ...

int i=0;
while ((t!=l.end())&&(i<10))
{
if ((i%3)==0) t=l.erase(t);
else ++t;
++i;
}

liquid
2003-11-20, 23:02:59
Guck mal hier (http://www.forum-3dcenter.org/vbulletin/showthread.php?s=&threadid=94651). Ist ein ganz ähnliches Problem.

cya
liquid

zeckensack
2003-11-21, 00:07:00
*bump*

(Forum kaputt - aktualisiert nicht)

White_Shadow
2003-11-21, 14:13:23
So ein dummer Fehler! Hät ich die Doku da wär das (sehr wahrscheinlich ;) ) nicht passiert. Zeckensack kennste ne gute Seite mit ner Doku von der STL (vielleicht ähnlich der API von Java) damit so nen Fehler nicht noch mal auftritt.

liquid
2003-11-21, 14:59:39
Silicon Graphics hat einen wirklich sehr guten STL Guide, den kann man sich entweder online angucken oder auch eine offline Version ziehen. Das zweite wäre für dich bestimmt die beste Option.
SGI STL Guide (http://www.sgi.com/tech/stl/)

cya
liquid

EDIT: Es gibt noch ein paar andere Guides, wenn Bedarf besteht suche ich mal die Links zu denen raus (habe leider nur offline Kopien).

White_Shadow
2003-11-21, 15:38:33
thx liquid, das von SGi kenn ich find ich, aber is net so doll, wenn die dokus net so groß sind kannste mir, wenn du so nett wärst, auch zumailen, dann brauchste nett suchen ;). Hab mehrere Addys einmal white_shadow@t-online.de mit 5Mb fassung dann tvoss123@web.de mit glaube max 4 mb und wenns richtig gross wird dann an die Uni tvoss@wmit01.it.math.uni-wuppertal.de da gibts, glaub ich, keine beschränkung (aber bitte net 1GB hinschicken dann killt mich der admin ;) )
White Shadow

liquid
2003-11-21, 15:48:55
Ist unterwegs.

cya
liquid