为什么以下两个代码片段会有不同的结果?我想在数字前面添加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);
最佳答案
for (auto it : digits){
范围变量本质上是从序列中按值复制的,因此
swap(tmpInt, it);
这一切都是在
tmpInt
和一个临时范围变量之间交换。您需要使用一个引用,以便获得与第一个示例相同的结果:
for (auto &it : digits){
swap(tmpInt, it);
关于c++ - 为什么这种交换方法不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42545836/