Code Fix

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

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

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

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

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

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

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

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

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