问题是关于循环内的变量。如何运作?
类似问题:
one
two
码:
for ( i = 0 ; i < 3 ; i++ ) {
vector<int> vint;
vint.push_back(i);
cout << "vecor size is: " << vint.size() << endl;
for ( j = 0 ; j < vint.size() ; j++ ) {
cout << "vint[" << j << "] = " << vint[j] << endl;
}
}
上面的代码给出了下一个输出:
vecor size is: 1
vint[0] = 0
vecor size is: 1
vint[0] = 1
vecor size is: 1
vint[0] = 2
看起来在每次迭代方法结束时,都会调用sdt :: vector :: erase或以某种方式vint再次为空。它是如何工作的,您是如何知道的?谢谢!
更新:
如果我希望在每次迭代中使用不同的向量,哪个更好:
在循环中声明vint
还是在循环之前声明它,并在循环结束时使用clear()?
最佳答案
for循环语句中的变量在每次迭代中都会被构造和破坏。在您的特定情况下,这将涉及每次迭代的内存分配和释放。如果每次迭代都需要不同的向量,则最好还是在循环之前(或在循环的初始化中)声明它,并在循环结束时(或在循环的进行中)clear()
声明它。