社区讨论

警钟长鸣:关于 for(auto v:a)

学术版参与者 9已保存回复 12

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
12 条
当前快照
1 份
快照标识符
@mhjqalm8
此快照首次捕获于
2025/11/04 06:45
4 个月前
此快照最后确认于
2025/11/04 10:19
4 个月前
查看原帖
如果你在代码中使用了 for(auto v:a),那么所有对 v 的修改都不会在 a 中体现!
比如:
CPP
vector<int> a;
a.push_back(1);
a.push_back(2);
for(auto v:a)v++;
for(auto v:a)cout<<v<<' ';
则输出为 1 2
改进方法:
  • 不使用这种语法,使用传统的 for(int i=0;i<n;i++)a[i]...
  • 使用 auto&,如 for(auto &v:a)。这种方式会传引用,这样在 a 中会同步修改。
本人已经被这个 BUG 硬控了 114514h 力(悲

回复

12 条回复,欢迎继续交流。

正在加载回复...