社区讨论
警钟长鸣:关于 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 中体现!比如:
CPPvector<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 条回复,欢迎继续交流。
正在加载回复...