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

时间:2012-04-26 01:41:10

标签: c++ c

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

        Region *swap = (Region*)myRegions;
        myRegionsLast = myRegions;
        myRegions = (Region[1000])swap;

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

3 个答案:

答案 0 :(得分:6)

这是因为您无法一次分配整个数组。但是,您可以指定一个指针:

Region reg1[1000], reg2[1000];
Region *myRegionsLast = reg1;
Region *myRegions = reg2;

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

你也可以一次交换数组一个元素,但它会涉及更多的数据复制。

答案 1 :(得分:0)

如何只创建Region类型的内容变量并迭代它......

for(int i=0; i<1000; i++)
{
    tempRegionTypeVariable = myRegionsLast[i];
    myRegionsLast[i] = myRegions[i];
    myRegions[i] = tempRegionTypeVariable;
}

希望这会有所帮助.. 这里“tempRegionTypeVariable”只是一个临时变量或一个Object。不是数组..

答案 2 :(得分:0)

其他有效答案在评论中发布:

  1. 使用std :: swap()/ std :: array :: swap
  2. 让它们动态分配数组而不是静态