Why is the output of statement 2 different from that of statement 1?
// a is of type vector < tuple <int, int> >
for (auto i: a)
{
get<0>(i)+=get<1>(i);
cout << get<0>(i) << " " << get<1>(i) << endl; // 1
}
for (auto i: a) cout << get<0>(i) << " " << get<1>(i) << endl; // 2
Suppose that initially, a contains [7, 3] , [9, 1]
Then 1 outputs
10 3
10 1
whereas 2 outputs
7 3
9 1
In short, the loop enclosing statement 1 seems to have no effect.
I think it has something to do with my usage of auto and not using *i to change the value, but I don't think that we can use *i in get.
Aucun commentaire:
Enregistrer un commentaire