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);
}
}
}
因此,我希望这个函数用字符串替换来替换向量中所有出现的字符串 old 。但是当调用这个函数时,它根本不会改变向量。我不确定我是否正确使用了擦除和插入功能。有任何想法吗?
首先,您需要通过引用而不是值传递向量。
void replace(vector<string>& my_vector_2, string old, string replacement){
第二次擦除和插入使无效 https://stackoverflow.com/questions/6438086/iterator-invalidation-rules它,您需要使用擦除返回的新迭代器来更新它
it = my_vector_2.erase(it);
it = my_vector_2.insert(it,replacement);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)