C ++ уточнение правил определения

Я только сталкивался с этим:

    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 |

Я думал, что время жизни вектора находится между двумя {} в цикле, но, похоже, я ошибаюсь. Для переменных время жизни таково, что значение не «забывается» при повторной итерации цикла, и поэтому кажется, что это поведение очень неуместно.

Кто-нибудь знает, почему это так?

-3

Решение

Вы можете развернуть цикл:

int ui=0;
{
// code
}
ui++;
{
// code
}
ui++;
{
// code
}
ui++;

Когда вы посмотрите на этот код, должно стать ясно, почему локальные переменные ведут себя так, как они.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]