如何在不复制元素的情况下交换数组
how to swap arrays without copying elements
我想交换两个整数数组而不复制它们的元素:
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 ]
在第三行我注释掉了我尝试过但没有成功的地方
有没有办法通过交换指针来做到这一点...
how to swap arrays without copying elements
根据交换是什么,数组是什么,不复制元素就不可能交换数组(准确地说,std::swap
交换每个元素,交换在概念上是浅拷贝) .
你可以做的是引入一个间接层。用指针指向数组。然后,交换指针将交换指向的数组而不复制元素:
int* ptr1 = Z1;
int* ptr2 = Z2;
std::swap(ptr1, ptr2); // now ptr1 -> Z2, ptr2 -> Z1
我想交换两个整数数组而不复制它们的元素:
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 ]
在第三行我注释掉了我尝试过但没有成功的地方 有没有办法通过交换指针来做到这一点...
how to swap arrays without copying elements
根据交换是什么,数组是什么,不复制元素就不可能交换数组(准确地说,std::swap
交换每个元素,交换在概念上是浅拷贝) .
你可以做的是引入一个间接层。用指针指向数组。然后,交换指针将交换指向的数组而不复制元素:
int* ptr1 = Z1;
int* ptr2 = Z2;
std::swap(ptr1, ptr2); // now ptr1 -> Z2, ptr2 -> Z1