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

标签 c++ c

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

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

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

最佳答案

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

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

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

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

关于c++ - 交换两个数组而不完全分配第三个数组 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326171/

相关文章:

c++ - CreateWindow 参数类型错误

c++ - 程序在退出时崩溃

c - 如何在 C 中进行位集/字节数组转换

c++ - 为什么 lock_guard 可以通过 unique_lock 得到一个已经锁定的互斥体? - 还有问题

C++ 等效于类属性的 Matlab 抽象

c - ALSA:耳机插孔感应的 API 是什么?

c - C 中的 Go 风格 channel

c - C 中运算符优先级的奇怪结果

C++ 字符串中的回车和换行

c++ - 查找文件中 10 个最长的单词