循环内声明

You*_*Who 3 c++ c++14

在像下面这样的循环中

for(int i=0; i<n; i++) {
  vector<int>v(100);
}
Run Code Online (Sandbox Code Playgroud)

在这方面我有一个疑问

  1. 对于每个循环,向量会被一次又一次地声明吗?如果是,为什么它不会导致问题(因为如果我们重新声明相同的东西,它会导致问题,例如两次 int x;)。

  2. 大小在每个循环中不断增加直到结束,在上面或这样的循环中

for(int i=0;i<10000;i++) {
 int k;
}
Run Code Online (Sandbox Code Playgroud)

Eya*_*lan 8

对于每个循环,向量会被一次又一次地声明吗?

对于每个循环,向量将再次声明。每次控件通过它的定义时,它都会被重新初始化,并且每次循环的迭代结束时,它都会被销毁。因此,它不会导致重新声明问题。每次创建向量时,它的大小都相同。

大小在每个循环中不断增加直到结束,在上面或这样的循环中

我不确定你的意思。循环将一直运行直到满足for条件(即i<10000),并且每次都k将重新初始化然后销毁。


R S*_*ahu 5

对于每个循环,向量会被一次又一次地声明吗?

不。

只有声明,但对象在循环的每次迭代中构造并在循环的每次迭代中销毁。

以下是非法的,因为有两个变量声明。

for(int i=0;i<n;i++)
{
   vector<int> v(100);
   vector<int> v;
}
Run Code Online (Sandbox Code Playgroud)

大小在每个循环中不断增加直到结束,在上面或这样的循环中

不清楚你的意思。你说的是谁的尺码

编译器生成的代码大小?这不会改变。

计算机在运行时使用的内存大小?这也不会改变。

是否需要更长的运行时间?是的。