例如,如果我使用数组的长度来确定for循环中的代码运行了多少次,我应该在for循环的顶部初始化数组的计数,以使程序不会继续计算字符串的长度?
一些简单的代码可以打印数组中的每个元素:
无需初始化数组的大小
int myArray[5] = { 1,2,3,4,5 };
for (int iPos = 0; iPos < size(myArray); ++iPos)
cout << myArray[iPos];
在for循环之前初始化数组的大小
int myArray[5] = { 1,2,3,4,5 };
int sizeOfArray = size(myArray);
for (int iPos = 0; iPos < sizeOfArray; ++iPos)
cout << myArray[iPos];
答案 0 :(得分:4)
for (int iPos = 0; iPos < size(myArray); ++iPos)
将在每次迭代中计算myArray
的大小。
如果myArray
的大小可以在循环的主体中更改,则 可能很重要。所以要小心。
如果myArray
的大小在循环中无法更改,则将计算提取为const int sizeOfArray = size(myArray);
到循环之前, 可能会为您带来 tiny >如果编译器本身没有意识到这一点,而是自己将计算提升到循环之外,则性能会有所提高。
一种更简单的方法是仅使用范围转换循环,因为这些循环被定义为仅计算一次大小:
for (const auto& element : myArray)
cout << element;
然后您也不必担心循环外部范围中是否存在sizeOfArray
变量。
答案 1 :(得分:2)