for (x:y) 循环在 C++ 中无法正常工作

for (x:y) loop isnt working properly in c++

本文关键字:常工作 工作 循环 for C++      更新时间:2023-10-16

我已经尝试了 2 个不同的 for 循环,其中一个有效,但另一个似乎不起作用。 第一个 for 循环的输出:2 3 4 5 5,第二个 for 循环的输出:1 2 3 4 5。

#include <iostream>
int main() 
{
int arr[5] = {1,2,3,4,5};
for (int y : arr) std::cout << arr[y] << std::endl;
std::cout << "---------" << std::endl;
for (int i = 0; i<5;i++){
std::cout << arr[i] << std::endl;
}
return 0;
}

第一个循环是基于范围的循环,用作更具可读性的等效物,相当于对一系列值进行操作的传统 for 循环,例如容器中的所有元素 (https://en.cppreference.com/w/cpp/language/range-for(

它类似于java或C#的样式循环。

在这种循环中,y 取的值是数组中元素本身的值 ( 1,2,3,4,5(,而不是索引 (0,1,2...( 所以你不需要打印arr[y],只需打印y本身

例如,以下代码中的两个循环都将打印 10,20,30,40,50

#include <iostream>
int main() 
{
int arr[5] = {10,20,30,40,50};
for (int y : arr) std::cout << y << std::endl;
std::cout << "---------" << std::endl;
for (int i = 0; i<5;i++){
std::cout << arr[i] << std::endl;
}
return 0;
}