2017-06-05 33 views
-1

我需要在每个偶数元素之后插入-20,但我的代码不能正确工作, 我做错了什么?插入矢量后每个偶数值具体数字

srand(time(NULL)); 
vector <int> v; 

for (int i = 0; i < 15; i++) 
{ 
    v.push_back(rand()%100); 
    cout << v[i] << endl; 
} 


cout << "Vector after inserting new value: \n\n"; 
for (int i = 0; i < v.size(); i++) 
{ 
    if (v[i]%2==0) 
    { 
     v.insert(v.begin()+i, -20); 

    } 
    cout << v[i] << endl; 
    i = i + 1; 
} 
+2

预期结果?实际结果? –

+0

也许std :: vector不是该作业的最佳容器。 – DeiDei

回答

1
vector <int> v; 

v.reserve(15); 
for (int i = 0; i < 15; i++) 
{ 
    v.push_back(rand() % 100); 
    cout << v[i] << endl; 
} 


cout << "Vector after inserting new value: \n\n"; 
for (int i = 0; i < v.size(); i++) 
{ 
    if (v[i] % 2 == 0) 
    { 
     v.insert(v.begin() + i + 1, -20); // We insert at the next position 
     i++; // We make additional increment only if insertion took place 
    } 
} 

for (int i = 0; i < v.size(); i++) 
{ 
    cout << v[i] << endl; 
} 

输出(带有空格这一翻译的换行符)

41 67 34 0 69 24 78 58 62 64 5 45 81 27 61 

Vector after inserting new value: 

41 67 34 -20 0 -20 69 24 -20 78 -20 58 -20 62 -20 64 -20 5 45 81 27 61 
+0

我们是否应该将其与OP的代码区分开来,或者是否可以添加一两个单词来解释如何解决问题? – mrt

+0

@mrt对不起,我没那么快:/ – Yola

3

使用i++i = i + 1不会很好地结束。

显然,如果插入元素,则只需增加i两次。

如果你只想位置i插入一个元素,那么你就需要使用

v.insert(v.begin() + 1 + i, ...)