循环基于范围的奇怪问题
Weird issue with range based for loop
我正在我的C++面向对象1类中学习向量,我们已经引入了循环的基于范围的概念。我决定单独练习基于范围的循环,这样我就可以习惯语法,但我遇到了一个奇怪的问题。
#include<iostream>
using namespace std;
int main()
{
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
for ( auto i: a)
{
cout << a[i] << " ";
}
return 0;
}
当我运行上面的代码时,我的输出如下。
2 3 4 5 6 7 8 9 0 1按任意键继续。。。
我的输出应该是
1 2 3 4 5 6 7 8 9 0按任意键继续。。。
有人能告诉我为什么跳过我的第一个索引吗?我有视觉工作室2013专业版。
您会得到奇怪的输出,因为range循环中的i
是数组中的值,而不是索引。也就是说,
for (auto i : a)
循环通过CCD_ 2的值。在您的代码中,您有效地打印了序列a[a[0]]
、a[a[1]]
等
你可能想要的代码是
for (auto i : a) {
std::cout << i << std::endl;
}
相关文章:
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- 我在范围内未声明的错误类有问题
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- 使用基于范围的循环迭代矢量时出现问题
- 示例代码中使用分隔符将 std::string 拆分为 std::vector 的范围问题
- C++ 字符串订阅超出范围的问题
- 命名空间范围问题
- 无法取消引用超出范围的向量迭代器 - 有什么问题?
- 断言失败错误,C++中的矢量下标超出范围问题
- 给定数组范围的选择排序问题
- 指针范围问题和返回类中封装的指针向量内的指针引用
- C++范围?将数组传递给函数时出现问题
- C++奇怪的问题.数据成员超出范围
- PlatformIO 的范围问题(?)
- C++. 面试. 关于返回 int* 值问题的范围
- 编程:原理与实践 使用C++ 第 4 章演练步骤 6:关于数字范围的一般问题
- 为什么BKDFHash不关心超出范围的问题?
- 访问函数中的使用声明:与范围相关的问题
- 函数返回本地变量,尽管变量不超出范围,没有编译器问题,并且代码执行
- 无法编译 - 范围问题