我需要在每个元素之后插入-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: nn";
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;
}
使用 i++
和 i = i + 1
无法很好地结束。
显然,只需插入元素时,您只需要两次递增i
。
如果要在位置i
之后仅插入元素,则需要使用
v.insert(v.begin() + 1 + i, ...)
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: nn";
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