例如,如果我有一个循环
for(int i = 0; i < N; i++) {
int a, b, c, d, e;
cin >> a >> b >> c >> d >> e;
foo(a, b, c, d, e);
}
或
int a, b, c, d, e;
for(int i = 0; i < N; i++) {
cin >> a >> b >> c >> d >> e;
foo(a, b, c, d, e);
}
哪一个应该更快?在第一种情况下,我在for循环中定义了五个变量,在第二种情况下,我在外面定义它。
我看过那些谈论&#34;更快的帖子&#34;例如Difference between declaring variables before or in loop?,但我不确定哪一个占用的内存较少。
我并不十分关心复杂性,而是关注程序中使用的内存量。
显然,在这种情况下,它并不重要,但如果我有一个多维for循环并且我必须定义变量数百万次呢?或者,如果我多次定义一个包含许多元素的大型矢量会怎么样?
如果这个问题非常简单,我很抱歉,因为我是c ++的新手。任何帮助将不胜感激。谢谢你们。
答案 0 :(得分:0)
不,每次循环迭代都将使用相同的内存。对于原始类型(例如int),如果你不初始化它们,你甚至不会遭受这种惩罚。如果您使用需要初始化的类型执行此操作,则第二个可能会更快(尽管如果您使用这样的类型,无论它是否在循环内部,可能取决于您对实例执行的操作)。