vector.insert没有调整大小?

时间:2017-09-18 01:25:43

标签: c++ vector

我正在尝试创建一个通过引用接收向量的函数,如果它看到向量条目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);
            }
        }
      }

}

1 个答案:

答案 0 :(得分:5)

使用

的问题
@Async

已在其中一条评论中指出:

  

在循环的第一次迭代之后,for ( int i = 0; i < n; ++i ) { ... } 不再等于2.剩下的迭代什么都不做。

如果从向量的末尾开始迭代并返回,您的函数将被简化。

另外,传递对向量的引用而不是指针。

这是一个完整的程序:

(*a)[i]

https://ideone.com/0Lip5j处查看它。