1

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

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

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

4

3 回答 3

6

发生这种情况是因为您不能一次分配整个数组。但是,您可以分配一个指针:

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

现在您的交换程序无需进一步修改即可工作。

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

于 2012-04-26T01:49:44.877 回答
0

如何仅创建 Region 类型内容的变量并遍历它...

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

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

于 2012-04-26T01:50:12.633 回答
0

评论中还发布了其他几个有效的答案:

  1. 使用 std::swap() / std::array::swap
  2. 使它们动态分配数组而不是静态
于 2012-04-26T01:52:30.077 回答