c++ - for (x:y) 循环在 C++ 中不能正常工作
问题描述
我尝试了 2 个不同的 for 循环,其中 1 个有效,但另一个似乎无效。第一个 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/语言/范围)
它类似于 java 或 C# foreach样式循环。
在这种循环中, 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;
}
推荐阅读
- c# - 在 Azure 环境中托管 functionapp 时从 Dictionary 读取值的问题
- javascript - 具有“colspan”和“rowspan”属性的转置表
- vba - 错误转到:获取错误消息-2147024809
- android - 如何在从服务器加载 100 多个对象并将其设置为适配器时避免 ANR;在安卓中
- sql - 使用更新触发器连接两列
- c++ - 如何在 QT 中不断读取 UDP 数据包?
- api - 使用 Google 距离矩阵 API 时的不同响应
- excel - Excel:使用两个输入从两个表中查找一个值
- php - 使用 AJAX 加载更多产品 WooCommerce
- python - win32file.WaitForMultipleObjects 如何等待所有对象