c++ - std::pair 的奇怪行为
问题描述
完全不明白,为什么这段代码:
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& …
推荐阅读
- apache-superset - Apache Superset 仪表板中的 URL 过滤器参数
- mongodb - 如何使用 mongodb 在 typegraphql 中存储引用的子文档?
- python - 如何修复由于 Pandas Groupby 中的级别导致的索引错误
- c++ - Visual Studio 没有为静态库构建创建 .lib 文件
- directadmin - Directadmin 错误名称服务器配置
- matlab - 如何用 NaN 填充两个向量之间的差异以使长度相等?
- amazon-web-services - 如何在 aws s3 存储桶和云端执行从非 www 到 www 的 301 重定向
- paypal - PayPal Live Webhooks 在没有任何更改的情况下突然停止访问我们的网络服务器
- unity3d - Unity2d:如何提高实例化预制件的速度?
- python - 了解 Bahdanau 的注意力线性代数