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

时间:2016-12-14 09:29:33

标签: c++ for-loop

我在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)

抱歉我的英语不好。提前谢谢。

2 个答案:

答案 0 :(得分:4)

现在(从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

答案 1 :(得分:1)

语法for (int i:array)遍历数组中的每个元素,与创建计数器的for (int i = 0; i<sizeof(array); i++)进行比较,该计数器在循环的每次迭代时自动递增。然后,计数器可用于使用array[i]

访问数组的元素

至于你使用哪一个,取决于你想做什么。在您的示例中,不需要跟踪您所在循环的哪个迭代,因此前者将正常工作。如果您希望每次都打印迭代次数,那么您将使用后者。

P.S。你的英语很完美:)