我刚刚遇到这个:
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|咔嚓...内容(矢量):0|
五...内容(矢量):1|咔嚓...内容(矢量):0|1|
五...内容(矢量):2|咔嚓...内容(矢量):0|1|2|
以为向量的生命周期在循环中的两个{}之间,但似乎我错了。对于变量,生存期使得在循环中重新迭代时不会"忘记"值,因此这种行为似乎非常不合适。
有谁知道为什么会这样?
您可以展开循环:
int ui=0;
{
// code
}
ui++;
{
// code
}
ui++;
{
// code
}
ui++;
当您查看此代码时,应该清楚为什么局部变量的行为与它们一样。