Gast
2006-01-21, 20:11:56
Hi (schon wieder ich ;-) )
list<string> myListe;
...
myListe.push_back(struct.name); // ein string innerhalb eines structs
...
if (irgendwas) {
cout << "Groesse: " << myListe.size() << endl;
myListe.pop_back();
cout << "Groesse: " << myListe.size() << endl;
}
cout << "Ende" << endl;
Ich benutze die Liste als Stack, hinten anfügen und hinten wieder löschen.
Ich füge strings in die Liste und wenn irgendwas passiert, entferne ich sie wieder (nicht sichtbar werden noch eine Reihe Dateioperationen durchgeführt).
Wenn irgendwas == true ist, dann ist die Ausgabe beispielsweise so, wenn myListe einen string enthält:
1
0
Das Element wird erfolgreich entfernt (0 wird ausgegeben), aber "Ende" nicht mehr. Ich bin wieder am Prompt angelangt.
Kommentiere ich die Zeile mit pop_back() aus, ist die Ausgabe:
1
1
Ende
Ich kann mir nicht erklären, was da beim Fall mit pop_back() nicht funktionieren soll, wenn die folgende Anweisung noch ausgeführt wird, die danach aber nicht mehr... ?!?
list<string> myListe;
...
myListe.push_back(struct.name); // ein string innerhalb eines structs
...
if (irgendwas) {
cout << "Groesse: " << myListe.size() << endl;
myListe.pop_back();
cout << "Groesse: " << myListe.size() << endl;
}
cout << "Ende" << endl;
Ich benutze die Liste als Stack, hinten anfügen und hinten wieder löschen.
Ich füge strings in die Liste und wenn irgendwas passiert, entferne ich sie wieder (nicht sichtbar werden noch eine Reihe Dateioperationen durchgeführt).
Wenn irgendwas == true ist, dann ist die Ausgabe beispielsweise so, wenn myListe einen string enthält:
1
0
Das Element wird erfolgreich entfernt (0 wird ausgegeben), aber "Ende" nicht mehr. Ich bin wieder am Prompt angelangt.
Kommentiere ich die Zeile mit pop_back() aus, ist die Ausgabe:
1
1
Ende
Ich kann mir nicht erklären, was da beim Fall mit pop_back() nicht funktionieren soll, wenn die folgende Anweisung noch ausgeführt wird, die danach aber nicht mehr... ?!?