我刚看到这个:
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);
}
产生以下输出:
配...内容(向量):0 | VOUT ...内容(向量):0 |
配...内容(向量):1 | VOUT ...内容(向量):0 | 1 |
配...内容(向量):2 | VOUT ...内容(向量):0 | 1 | 2 |
我认为向量的生命周期在循环中的两个{}之间,但似乎我错了。对于变量,生命周期是这样的,当重新遍历循环时,该值不会被“遗忘”,因此看起来这种行为非常不合适。
有谁知道为什么会这样?
答案 0 :(得分:1)
您可以展开循环:
int ui=0;
{
// code
}
ui++;
{
// code
}
ui++;
{
// code
}
ui++;
当您查看此代码时,应该清楚为什么局部变量的行为与它们一样。