在每个偶数特定数字之后,插入向量中

Insert in vector after each even value specific number

本文关键字:之后 插入 向量 数字      更新时间:2023-10-16

我需要在每个元素之后插入-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