不能既使用迭代又同时更新。
Wrong
1
2
3
4
5
6
7
8
9
10
11
12
13
14vector<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
16vector<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);
}
}