C++ 为什么这种交换方法不起作用?
为什么下面两段代码的结果不同?我想在数字前面加一个1,这是一个整数向量。但是第二个代码段没有正确交换C++ 为什么这种交换方法不起作用?,c++,C++,为什么下面两段代码的结果不同?我想在数字前面加一个1,这是一个整数向量。但是第二个代码段没有正确交换 int tmpInt(1); for (int i=0; i<digits.size(); i++){ swap(tmpInt, digits[i]); } digits.push_back(tmpInt); 范围变量基本上是从序列中按值复制的,因此 swap(tmpInt, it); 所有这些操作都是在tmpInt和临时范围变量之间进行交换 为了获得与第一个示例相同的结
int tmpInt(1);
for (int i=0; i<digits.size(); i++){
swap(tmpInt, digits[i]);
}
digits.push_back(tmpInt);
范围变量基本上是从序列中按值复制的,因此
swap(tmpInt, it);
所有这些操作都是在tmpInt
和临时范围变量之间进行交换
为了获得与第一个示例相同的结果,您需要使用引用:
for (auto &it : digits){
swap(tmpInt, it);
范围变量基本上是从序列中按值复制的,因此
swap(tmpInt, it);
所有这些操作都是在tmpInt
和临时范围变量之间进行交换
为了获得与第一个示例相同的结果,您需要使用引用:
for (auto &it : digits){
swap(tmpInt, it);
修辞:
intx=6;int y=x;y=4;//为什么x仍然是6而不是4???
我认为“it”不是迭代器,所以也许你想改变名称修辞:intx=6;int y=x;y=4;//为什么x仍然是6而不是4???
我认为“it”不是迭代器,所以您可能想更改名称