我正在尝试创建一个通过引用接收向量的函数,如果它看到向量条目2,则需要删除该条目并将其替换为4个副本5.
所以如果向量是222(那么它的大小是n = 3),我想要555555555555作为新的向量
然而,它只适用于前几个,当索引是< ñ。
所以现在,它会将矢量a更改为555522 任何想法如何使矢量调整大小?
void replace2 (vector <int>* a, int n){
for (int i = 0; i < n; ++i){
if ((*a)[i] == 2){
(*a).erase((*a).begin() + i);
for(int j = 0; j < 4; ++j){
(*a).insert((*a).begin() + i, 5);
}
}
}
}
答案 0 :(得分:5)
使用
的问题@Async
已在其中一条评论中指出:
在循环的第一次迭代之后,
for ( int i = 0; i < n; ++i ) { ... }
不再等于2.剩下的迭代什么都不做。
如果从向量的末尾开始迭代并返回,您的函数将被简化。
另外,传递对向量的引用而不是指针。
这是一个完整的程序:
(*a)[i]