为什么以下两段代码会有不同的结果?我想在数字前添加1,这是一个整数向量。但第二个片段没有正确交换。
int tmpInt(1);
for (int i=0; i<digits.size(); i++){
swap(tmpInt, digits[i]);
}
digits.push_back(tmpInt);
与
int tmpInt(1);
for (auto it : digits){
swap(tmpInt, it);
}
digits.push_back(tmpInt);
答案 0 :(得分:4)
for (auto it : digits){
范围变量基本上由序列中的值复制,因此
swap(tmpInt, it);
所有这一切都是在tmpInt
和临时范围变量之间进行交换。
您需要使用引用,以便在第一个示例中获得相同的结果:
for (auto &it : digits){
swap(tmpInt, it);