我在C ++中看到了奇怪的Stack<T>
循环语法。请参阅以下程序。
for
它已在 GCC Linux 平台上成功运行。
参考链接Here。
所以,我的问题是,这是在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;
}
是否等同于for (int i:array)
?
抱歉我的英语不好。提前谢谢。
答案 0 :(得分:4)
现在(从C ++ 11开始)两个 for循环的不同语法,旧的C风格:
for (initialization; test; increment)
和新的
for (declaration: container)
在新语法中,declaration
声明一个变量,该变量连续赋予容器的每个元素的值。 “声明”的常见值为auto val
,const auto val
,auto& val
和const auto& val
,具体取决于您是要引用容器中的值还是副本,以及你是否希望价值保持不变。
两种语法都是正确的。这取决于你想要在循环中做什么。我的偏好是使用基于范围,除非我需要循环计数器或迭代器...在这种情况下我回到旧样式。
有关规范的详细信息(以及“容器”的含义),请参阅http://en.cppreference.com/w/cpp/language/range-for。
答案 1 :(得分:1)
语法for (int i:array)
遍历数组中的每个元素,与创建计数器的for (int i = 0; i<sizeof(array); i++)
进行比较,该计数器在循环的每次迭代时自动递增。然后,计数器可用于使用array[i]
至于你使用哪一个,取决于你想做什么。在您的示例中,不需要跟踪您所在循环的哪个迭代,因此前者将正常工作。如果您希望每次都打印迭代次数,那么您将使用后者。
P.S。你的英语很完美:)