0

完全不明白,为什么这段代码:

vector<int>v={1,2,3,4,5};
vector<pair<int,int>> pairs;
pairs.push_back(make_pair(1, 1));
for (auto el:v) {
   for (auto p:pairs) {
      pairs[0].second++;
      cout<<p.second;
   }
}

打印 "12345",这段代码:

vector<int>v={1,2,3,4,5};
vector<pair<int,int>> pairs;
pairs.push_back(make_pair(1, 1));
for (auto el:v) {
   for (auto p:pairs) {
      p.second++;
      cout<<p.second;
   }
}

打印“22222” (唯一的区别是在p.second++ 上 更改pairs[0].second ++ )

4

1 回答 1

1

在第二个循环中,您增加元素的副本。利用

for(auto& …
于 2021-09-26T16:15:11.173 回答