【发布时间】:2013-04-06 14:23:21
【问题描述】:
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;。这消除了有关迭代器失效的任何问题,并消除了一堆搅动以删除一个元素,然后在该元素曾经所在的位置打开一个插入孔。
标签: c++ vector insert iterator erase