问题是关于循环内的变量。如何运作?
类似问题:
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()声明它。

07-26 09:43