Code Fix

中級範囲for文で要素をコピーしてしまい変更が反映されないバグ › パターン1

範囲for文で要素をコピーしてしまい変更が反映されないバグ

for (int n : nums) のように範囲for文の変数を値(コピー)で受け取っているため、ループの中でnを書き換えても元のvectorの要素は変わらないバグです。

 1  #include <iostream>
 2  #include <vector>
 3  int main() {
 4      std::vector<int> nums = {1, 2, 3};
 5      for (_________ n : nums) {
                 ^
 6          n *= 2;
 7      }
 8      for (int n : nums) std::cout << n << " ";
 9      std::cout << std::endl;
10      return 0;
11  }
出力: 1 2 3期待: 2 4 6

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

範囲for文で要素をコピーしてしまい変更が反映されないバグ

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)