You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确为std::array使用范围基for循环?遍历结果与传统循环不一致

问题原因

范围基 for 循环的循环变量直接对应容器的元素值,不是数组下标。你代码中错误将循环得到的元素值作为下标去二次访问std::array,才导致输出结果异常:
你初始化的数组元素为1、2、3、4、5,依次用这些值作为下标访问数组时:

  • 第一次循环i=1,取ar[1]得到2
  • 第二次循环i=2,取ar[2]得到3
  • 第三次循环i=3,取ar[3]得到4
  • 第四次循环i=4,取ar[4]得到5
  • 第五次循环i=5,取ar[5]属于数组越界访问,属于未定义行为,本次运行刚好读到内存中存储的0值,因此最后一位输出为0
正确使用方式

范围基 for 循环会自动遍历容器从begin()到end()的所有元素,直接输出循环变量即可,不需要再通过下标访问数组:

for(const int& i: ar) {
    std::cout << i << " ";
}

修改后运行输出结果会和前两种遍历方式完全一致。

内容的提问来源于stack exchange,提问作者skidog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:12:01