我进入C++ 11并且真的无法理解为什么会发生这种情况:
const int arrSource[4] = { 5,7,6,4 };
for (auto& i : arrSource) {
std::cout << i << " ";
++i; //error
}
Run Code Online (Sandbox Code Playgroud)
它说i必须是一个可修改的左值,并且i:你不能分配给一个变量const.
所以它意味着,如果arrSource[]是const,它i const也是如此?
所以它意味着,如果
arrSource[]是const,它iconst也是如此?
是的,如果数组是const,则数组中的每个元素也是const.
在auto&推导出基于所述初始化剂的类型,在这种情况下,它被推断为是int const&,因此不能被修改.
可能不需要增量(不确定您的意图).基于范围的for循环负责迭代之间的递增.
如果想要修改阵列(通过i),那么你需要删除const.