前两天在准备实验数据的时候,对一个vector写了类似这样一段代码:1
2
3for(auto item : vector){
item = xxx;
}
今天早上一到公司又瞥到了这段代码,突然就觉得心头一紧,赶紧找个编译器测试了一下,果不其然!!!!两天的数据基本上毁于这一段了,吓出一身冷汗,还好后来找到了其他的补救措施。
言归正传,上面的写法是不能改变item的值的,像上面的这种遍历方式, 应该是按值传递, 拷贝了一份需要遍历的数据结构,这时是无法对其进行有效修改的。想要在遍历的同时对元素的值进行修改,将遍历的变量声明为引用类型。1
2
3for(auto &item : vector){
item = xxx;
}