交换两个数组而不完全分配第三个(C++)

eds*_*eds 1 c c++

我有两个类型的数组,Region大小都是1000,并且在循环的每次迭代中我想交换它们中的两个(通过交换它们的内存地址).我希望这会奏效:

        Region *swap = (Region*)myRegions;
        myRegionsLast = myRegions;
        myRegions = (Region[1000])swap;
Run Code Online (Sandbox Code Playgroud)

第一行看起来很好.第二行和第三行是无效分配,因为您显然无法重新分配该类型.第三行也无效,因为您无法转换为该类型(Region [1000]).显然,如果我可以提供帮助,我不想分配全新的区域[1000].有人能帮我完成我想要的吗?

das*_*ght 6

发生这种情况是因为您无法一次分配整个数组.但是,您可以指定指针:

Region reg1[1000], reg2[1000];
Region *myRegionsLast = reg1;
Region *myRegions = reg2;
Run Code Online (Sandbox Code Playgroud)

现在你的交换例程无需进一步修改即可运行.

您也可以一次交换数组一个元素,但它将涉及更多的数据复制.