Я только сталкивался с этим:
vector<int> vOut;
for(int ui=0;ui<3;ui++)
{
vector<int> v;
v.push_back(ui);
vOut.push_back(ui);
cerr << "v...";
printVec(v);
cerr << "vOut...";
printVec(vOut);
}
который производит следующий вывод:
V … Содержание (Вектор): 0 | Vout … Содержание (Вектор): 0 |
V … Содержание (Вектор): 1 | Vout … Содержание (Вектор): 0 | 1 |
V … Содержание (Вектор): 2 | Vout … Содержание (Вектор): 0 | 1 | 2 |
Я думал, что время жизни вектора находится между двумя {} в цикле, но, похоже, я ошибаюсь. Для переменных время жизни таково, что значение не «забывается» при повторной итерации цикла, и поэтому кажется, что это поведение очень неуместно.
Кто-нибудь знает, почему это так?
Вы можете развернуть цикл:
int ui=0;
{
// code
}
ui++;
{
// code
}
ui++;
{
// code
}
ui++;
Когда вы посмотрите на этот код, должно стать ясно, почему локальные переменные ведут себя так, как они.
Других решений пока нет …