【发布时间】:2021-11-19 00:24:41
【问题描述】:
完全不明白,为什么是这样的代码:
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++)
【问题讨论】:
-
在
for (auto p : pairs)中,p是pairs中元素的副本,而pairs[0]绝对是pairs中的实际元素。使用 ``for (auto &p :pairs)` 来引用pairs中的元素。
标签: c++ c++11 foreach c++17 std-pair