这是在C++中使用 for 循环的正确方法吗?

Is it the correct way to use for loop in C++?

本文关键字:方法 循环 for C++      更新时间:2023-10-16

我在C++看到了奇怪的for循环语法。请参阅以下程序。

#include <iostream>
using namespace std;
int main()
{
int num, count = 0;
int array[]= {1,1,2,3,4,1,3,2,9,8,7};
cout<<"Which number would you like to know about how many times it appeared?"<<endl;
cin>>num;
for (int i:array)
{
if (i == num)
++count;
}
cout<<"Number "<<num<<" appeared "<<count<<" times in the array"<<endl;
return 0;
}

它成功地在GCC Linux平台上运行。

参考链接 这里.

所以,我的问题是,这是在C++中使用 for 循环的正确方法吗?

另外,for (int i:array)等同于for ( int i:array ; ; )吗?

对不起,我的英语不好。提前谢谢。

现在(自 C++11 以来)有两种不同的 for循环语法,即旧的 C 样式:

for (initialization; test; increment)

和新的

for (declaration: container)

在新语法中,declaration声明一个变量,该变量依次给定容器中每个元素的值。 "声明"的常见值是auto valconst auto valauto& valconst auto& val,这取决于你是要引用容器中的值还是副本,以及是否需要值常量。

两种语法都是正确的。 这取决于你想在循环中做什么。 我的偏好是使用基于的范围,除非我需要循环计数器或迭代器......在这种情况下,我会回到旧风格。

有关规范的血腥细节(以及"容器"的含义),请参阅 http://en.cppreference.com/w/cpp/language/range-for。

语法for (int i:array)遍历数组中的每个元素,而for (int i = 0; i<sizeof(array); i++)则创建一个计数器,该计数器在循环的每次迭代中自动递增。然后,可以使用计数器访问数组的元素array[i]

至于你会使用哪一个,这取决于你想做什么。在您的示例中,无需跟踪您正在使用的循环迭代,因此前者将正常工作。如果你想,比如说,每次都打印迭代号,那么你将使用后者。

附言你的英语是完美的:)