C++での範囲for文とpairの振る舞い

質問

AtCoderのコードテストで下のコードのように出力結果が11となりました。13になるはずという理解だったのでなぜそうならないか、下の範囲for文での各pairの更新がなされていないのか教えて欲しいです。

該当のソースコード

C++20(gcc12.2)

1#include <bits/stdc++.h>2using namespace std;3 4int main() {5 6 vector<pair<int, int>> v(2);7 v = {make_pair(9, 8), make_pair(7, 6)};8 9 for(int i; i<2; i++){10 v.at(i) = make_pair(11,12);11 }12 13 for(pair<int, int> t : v) {14 t = make_pair(13,14);15 }16 17 cout << v.at(1).first << endl;//1118}

補足情報

APG4b3.02の勉強中で生じた疑問です

コメントを投稿

0 コメント