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);
}
}
}
したがって、この関数は、ベクトル内の古い文字列のすべての文字列を置換文字列で置き換えることができます。しかし、この関数を呼び出すときには、ベクトルをまったく変更しません。私は、消去と挿入機能を正しく使用しているかどうかはわかりません。何か案は?削除と挿入を使用してベクトル内の要素を置換する
あなたは_reference_としてベクトルを渡すべきではないでしょうか。 –
ああ、私は今、とても馬鹿だと感じています....ありがとう! –
消去して挿入する必要はありません。 '* it = replacement;'を代入するだけです。これにより、イテレータの無効化に関する問題はなくなり、要素を削除するための一連の変更が削除され、その要素があった場所に挿入するための穴が開かれます。 –