void replace(vector<string> my_vector_2, string old, string replacement){
vector<string>::iterator it;
for (it = my_vector_2.begin(); it != my_vector_2.end(); ++it){
if (*it==old){
my_vector_2.erase(it);
my_vector_2.insert(it,replacement);
}
}
}
So, ich möchte diese Funktion, um alle Vorkommen der Zeichenfolge alt im Vektor durch die Zeichenfolge ersetzen zu ersetzen. Aber wenn diese Funktion aufgerufen wird, ändert sich der Vektor einfach nicht. Ich bin mir nicht sicher, ob ich die Lösch- und Einfügefunktionen richtig verwende. Irgendwelche Ideen?Ersetzen von Elementen im Vektor mit Löschen und Einfügen
Sollten Sie nicht den Vektor als _reference_ passieren? –
Ah Mann, ich fühle mich jetzt so dumm .... Danke! –
Sie müssen nicht löschen und einfügen. Ordnen Sie einfach zu: '* it = Ersetzung;'. Dadurch werden Probleme bei der Iterator-Invalidierung vermieden und eine Reihe von Änderungen entfernt, um ein Element zu entfernen. Anschließend wird ein Loch zum Einfügen geöffnet, an dem sich dieses Element befand. –