以下のようなコードを書いていました。
mapのvalueが更新されると思っていたのですが変わらずでした。
cpp
1int main() { 2 map<char, int> mp; 3 mp['a'] = 1; 4 mp['b'] = 1; 5 // ここでmpの全部のvalueを10にしたつもり 6 for(auto m:mp) m.second = 10; 7 // 出力は a 1, b 1だった。 8 for(auto m:mp) { 9 cout << m.first << " " << m.second << endl; 10 }
確認のためvectorについても同様の操作を行ったところ, 拡張for文のときには更新されないことを確認しました。
cpp
1 2int main() { 3 vector<int> v = {1, 2}; 4 // 更新されない 5 for(auto vv:v) vv = 10; 6 cout << v[0] << endl; // v[0] = 1のまま 7 8 // 更新される 9 for(int i=0; i<v.size(); i++) v[i] = 10; 10 cout << v[0] << endl; // v[0] = 10 11}
質問
これらの値が更新されるときとされない時で、内部的にはどのような違いがあるのでしょうか?
ご回答いただけると幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。