我想交換兩個整數陣列而不復制它們的元素:
int Z1[10],Z2[10];
std::swap(Z1,Z2); // works
//int *tmp;*tmp=*Z1;*Z1=*Z2;*Z2=*tmp; // doesn't work
[ expressions involving Z1,Z2 ]
在第三行中,我注釋掉了我嘗試過但沒有奏效的方法有沒有辦法通過交換指標來做到這一點......
uj5u.com熱心網友回復:
如何在不復制元素的情況下交換陣列
由于交換是什么以及陣列是什么,如果不復制元素就不可能交換陣列(準確地說,std::swap
交換每個元素,交換在概念上是淺拷貝)。
你可以做的是引入一個間接層。用指標指向陣列。然后,交換指標將交換指向的陣列而不復制元素:
int* ptr1 = Z1;
int* ptr2 = Z2;
std::swap(ptr1, ptr2); // now ptr1 -> Z2, ptr2 -> Z1
uj5u.com熱心網友回復:
你可以做你嘗試的,但使用動態分配的陣列:
int* tmp;
int* Z1 = new int[10];
int* Z2 = new int[10];
// do something...
tmp = Z2;
Z2 = Z1;
Z1 = tmp;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/484061.html
上一篇:向量回傳的size()為0