BUG合集

  1. 不能既使用迭代又同时更新。

    Wrong

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    vector<vector<int>> ans;
    for (auto i:nums)
    {
    for (auto& row:ans)//使用了ans的迭代
    {
    vector<int> k;
    for (auto& col:row)
    {
    k.push_back(col);
    }
    k.push_back(i);
    ans.push_back(k);//同时又修改了ans,错误!!
    }
    }

    Right

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    vector<vector<int>> ans;
    for (auto i:nums)
    {
    vector<vector<int>> pre;//要用一个pre来保存上一步的ans
    pre = ans;//然后对pre迭代,对ans修改,这样就对了~
    for (auto& row:pre)
    {
    vector<int> k;
    for (auto& col:row)
    {
    k.push_back(col);
    }
    k.push_back(i);
    ans.push_back(k);
    }
    }