gpt4 book ai didi

c++ - 是否建议在循环内声明变量?

转载 作者:行者123 更新时间:2023-12-02 01:29:33 25 4
gpt4 key购买 nike

据我所知,在循环内声明变量的效率低于在循环外部声明并在循环内修改它的效率。

示例:

std::list<<double> l;
for(int i = 0; i < 100000; ++i)
{
double a;
a = 500.0 * i;
l.append(a);
}

另一个带有指针的示例:

std::list<<double *> l;
for(int i = 0; i < 100000; ++i)
{
double* a;
*a = 500.0 * i;
l.append(a);
}

这些示例没有足够的意义,但我只是想表明 double 和指针是在循环内声明的。

问题是,变量的作用域与循环相同,所以当循环进行迭代时,它会销毁变量然后再次声明它吗?或者它只是保留在堆中直到 for 循环结束?这样做的效率如何?是不是浪费资源?

我按照 C++ 的方式对其进行编码。

提前致谢!

最佳答案

就内存使用而言,大多数实现没有差异。通常创建堆栈帧来容纳函数内任何位置声明的所有变量。

但是,如果该类型具有构造函数和/或析构函数,则每次循环迭代调用它可能会产生额外的开销。如果该类型分配自己的内存(例如 std::vector ),那么这些分配和释放也将在每次循环迭代中发生,而不是只发生一次。

也就是说,如果不需要的时间超过一次迭代,您仍然应该首先在循环内声明该变量!很容易忘记清除任何以前的值,这很快就会导致错误。最好先纠正,然后再优化。

关于c++ - 是否建议在循环内声明变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73645368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com