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);
}
}
}
Итак, я бы хотел, чтобы эта функция заменяла все вхождения старой строки в векторе заменой строки. Но при вызове этой функции она просто вообще не меняет вектор. Я не уверен, правильно ли я использую функции стирания и вставки. Любые идеи?
*it = replacement;
. Это устраняет любые проблемы, связанные с аннулированием итератора, и устраняет кучу взбалтывания, чтобы удалить элемент, а затем открыть дыру для вставки там, где раньше был этот элемент. - person Pete Becker   schedule 14.04.2013