On Wed, Jan 16, 2002 at 04:29:14PM +0100, Torsten Werner wrote:
while (!l.empty()) { typedef list::iterator iterator; for (iterator i = l.begin(); i != l.end(); ) { if (drand48() < 0.1) { iterator j = i; i++; l.erase(j);
Das kannst du abkuerzen zu i = l.erase(i); list::erase() liefert den Zeiger auf das naechste Element zurueck. Das i++ kann man dann entsprechend in die for-Deklaration mit reinnehmen (Mal ganz abgesehen davon, dass dein Algorithmus jedes Element in der Liste loescht, weil er in der for-Schleife nicht hochzaehlt :)).
if (l.empty()) { break; } } else { i++; } }
}
Die Frage ist, bekomme ich das auch kürzer hin? Effizient und korrekt muss es aber sein.
Torsten
cu, Ulf