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 5Aber 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 5Nacher:
value: 1 7 5
tok: 1 2 3Danke 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).