Code Fix

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

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

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

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

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

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

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

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

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