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);
}
}
}
Chciałbym, aby ta funkcja zastąpiła wszystkie wystąpienia ciągu znaków starego w wektorze zastępowaniem ciągu znaków. Ale wywołując tę funkcję, po prostu nie zmienia w ogóle wektora. Nie jestem pewien, czy używam poprawnie funkcji usuwania i wstawiania. Jakieś pomysły?Zastępowanie elementów w wektorze za pomocą wymazywania i wstawiania
nie należy przekazać wektor jako _reference_? –
Ah man, czuję się teraz tak głupi ... Dzięki! –
Nie trzeba wymazywać ani wstawiać. Po prostu przypisz: '* it = replacement;'. Eliminuje to wszelkie problemy związane z unieważnieniem iteratora i usuwa szereg mieszania w celu usunięcia elementu, a następnie otwiera otwór do wstawienia w miejscu, w którym znajdował się ten element. –