Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这种交换方法不起作用?_C++ - Fatal编程技术网

C++ 为什么这种交换方法不起作用?

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和临时范围变量之间进行交换 为了获得与第一个示例相同的结

为什么下面两段代码的结果不同?我想在数字前面加一个1,这是一个整数向量。但是第二个代码段没有正确交换

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”不是迭代器,所以您可能想更改名称