C++ 对循环的范围感到困惑

C++ 对循环的范围感到困惑,c++,ranged-loops,C++,Ranged Loops,对我来说,这并不能产生预期的结果: int main() { int i[12] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; for (auto v : i) std::cout << v << std::endl; for (auto v : i) v = v+1; for (auto v : i) std::cout << v &

对我来说,这并不能产生预期的结果:

int main() {

    int i[12] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };

    for (auto v : i)
        std::cout << v << std::endl;

    for (auto v : i)
        v = v+1;

    for (auto v : i)
        std::cout << v << std::endl;

    return 0;
}
intmain(){
inti[12]={1,1,1,1,1,1,1,1,1,1,1,1};
用于(自动v:i)

std::cout在第二个循环中,
autov:i
v
是每个
i
的副本

要更改
i
值,您需要:

intmain(){
inti[12]={1,1,1,1,1,1,1,1,1,1,1,1};
用于(自动v:i)

std::cout在第二个循环中,
autov:i
v
是每个
i
的副本

要更改
i
值,您需要:

intmain(){
inti[12]={1,1,1,1,1,1,1,1,1,1,1,1};
用于(自动v:i)

std::cout@RikardRasmussen如果答案有帮助,你介意接受吗?当然!它告诉我还有6分钟等待。@RikardRasmussen如果答案有帮助,你介意接受吗?当然!它告诉我还有6分钟等待。
int main() {
  int i[12] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };

  for (auto v : i)
    std::cout << v << std::endl;

  for (auto& v : i)  // Add "&" here. Now each v is a reference of i.
    v = v + 1;

  for (auto v : i)
    std::cout << v << std::endl;

  return 0;
}