Lerre Token löschen



  • Hey Leute,

    folgendes Beispiel:

    "12345" in Token zerlegt 1,2,3,4 wobei 1 die tok nummer 1 hat, 2 die tok nummer 2 usw.
    Wenn ich jetzt z.b. für tok [2] die Summe aus tok[3] und tok[4] einsetze und tok[3 und 4] "leere" sähe das wie folgt aus:

    value: 1 7 ' ' 5
    tok: 1 2 3 4 5

    Aber wie schaffe ich es nun das tok[5] an das letzte tok mit einem Inhalt (value) herranzurücken? Damit es dann am Ende so aussieht:

    Vorher:
    value: 1 7 ' ' 5
    tok: 1 2 3 4 5

    Nacher:
    value: 1 7 5
    tok: 1 2 3

    Danke für eure Hilfe



  • In welcher Form speicherst du denn diese Token? (Ich würde dafür ja einen STL-Container wie std::vector<> oder std::list<> verwenden - dort kann man recht problemlos löschen oder umsortieren)



  • ja, ich speichere sie in : vector<Token>tok;

    Wie lösche /editiere ich dort die "Stellplätze" der einzelnen Token?



  • Du verwendest den Index im vector<> zum Zugriff (der beginnt übrigens bei 0) und kannst dann mit erase() Elemente löschen.



  • --gelöscht...--



  • Also konkret wäre das dann :

    Ich möchte das 3te Token aus dem Container löschen:

    erase(tok[3]);
    

    Ist das so korrekt?
    Wass passiert mit dem tok[4] zum beispiel? Rutscht es dann auf die dritte Stelle?



  • Nein, so ists falsch. Wie CStoll zwei posts weiter oben gesagt hat, fangen Array-Indizes bei 0 an, der 3 Token wäre demzufolge

    tok.erase(tok.begin()+2);
    

    Und ja, das 4. element rutscht nach vorn (Edit: Alle elemente hinter dem gelöschten rutschen einen nach vorn,
    Löschst du mehrere, rutscht es um die Anzahl der gelöschten nach vorn).


Anmelden zum Antworten