我们应该在 for 循环之前声明我们正在使用的条件吗?

MyN*_*ame 2 c++ visual-studio visual-c++

例如,如果我使用数组的长度来确定 for 循环中的代码运行多少次,我是否应该在 for 循环的顶部初始化数组的计数,以便程序不会继续计算字符串?

一些打印数组中每个元素的简单代码:

不初始化数组的大小

int myArray[5] = { 1,2,3,4,5 };

for (int iPos = 0; iPos < size(myArray); ++iPos)
    cout << myArray[iPos];
Run Code Online (Sandbox Code Playgroud)

在 for 循环之前初始化数组的大小

int myArray[5] = { 1,2,3,4,5 };

int sizeOfArray = size(myArray);
for (int iPos = 0; iPos < sizeOfArray; ++iPos)
    cout << myArray[iPos];
Run Code Online (Sandbox Code Playgroud)

Jes*_*uhl 5

for (int iPos = 0; iPos < size(myArray); ++iPos)将计算myArray每次迭代的大小。如果循环体的大小可以改变,这可能很重要myArray。所以要小心。

如果大小myArray不能在循环改变,那么在循环之前提取计算为const int sizeOfArray = size(myArray); 可能获得你一个微小的性能一点,如果编译器不认识到这一点本身并吊计算出自身的循环。

一种更简单的方法是使用 range-for 循环,因为它们被定义为只计算一次大小:

for (const auto& element : myArray)
    cout << element;
Run Code Online (Sandbox Code Playgroud)

然后你也不必担心sizeOfArray变量存在于循环外的范围内。