循环内声明

问题描述 投票:1回答:1

像下面这样循环

for(int i=0; i<n; i++) {
  vector<int>v(100);
}

在这一点上,我有一个疑问

  1. 每次循环都会重复声明向量吗?如果是,为什么不会引起问题(因为如果我们重新声明同一个东西,就会引起问题,就像两次声明int x;)。

  2. 每次循环的大小是否会不断增加,是在上面还是在这样的循环中?

for(int i=0;i<10000;i++) {
 int k;
}
c++ c++14
1个回答
7
投票

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

对于每一次循环,向量都会被再次声明。每次控制通过它的定义时,它将被新的初始化,每次循环的迭代结束。灭顶之灾. 因此,它不会引起重新声明的问题。每次创建向量时,它的大小都是一样的。

每次循环时,大小都会不断增加,直到结束,是在上面还是在这样的循环中?

我不知道你说的是什么意思。循环将运行到 for 条件(即 i<10000),而每次 k 会被新初始化,然后销毁。


5
投票

每次循环时,是否会重复声明向量?

不会。

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

下面的例子是不合法的,因为有两个变量的声明。

for(int i=0;i<n;i++)
{
   vector<int> v(100);
   vector<int> v;
}

在上面的循环中或在这样的循环中,每次循环的大小都在不断增加吗?

我不清楚你说的是什么意思。谁的 大小 你说的是什么?

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

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

运行的时间会不会更长?会的。

© www.soinside.com 2019 - 2024. All rights reserved.