Überschreiben eines Listenelementes



  • Hallo,

    ich habe ein kleines Programm geschrieben, das String - Elemente in einer Liste abspeichert. Jetzt will ich bestimmte Elemente der Liste überschreiben,

    z.B:
    list<string> Liste;
    list<string>::iterator it1; // Iterator definieren

    string chartAtPos("");
    string rule("Autobahnmeister");

    for (int i=0; i<rule.length(); i++)
    {
    chartAtPos = rule.substr(i,1);
    charList.push_back(chartAtPos); //speichern in Liste
    }
    //jetzt sind alle Buchstaben der Regel in einer Liste gespeichert
    ...
    Jetzt wollte ich ein Element der Liste, z.B. das b erneut mit der Regel überschreiben. Habe dies mit erase(Löschen eines Elementes) und dann mit insert(einfügen der Regel) versucht. Dabei hat er mir keinen Fehler beim kompilieren angezeigt, ist jedoch beim ausführen an dieser Stelle gescheitert.
    Gibt es noch andere Möglichkeiten so ein Listenelement zu überschreiben?



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hi, wahrscheinlich hast du den Iterator den du an erase übergeben hast, auch an insert übergeben. Leider ist dieser Iterator danach ungültig. erase gibt dir nen neuen Iterator zurück, den du dann an insert übergeben kannst.



  • Wenn du bloß was überschreiben willst, brauchst du das Listenelement doch nicht zu löschen und neu einzufügen. Oder willst du, dass das Element an das Ende kommt?



  • Einfach überschreiben, das wars ... hab nicht an den Pointer gedacht 😡

    Habs so gelöst:

    *Iter = this->rule;
    

    und funktioniert natürlich!


Anmelden zum Antworten