例如,我有一个包含 200 个整数的数组。我想要做的是将它转换为两个 80 个整数的数组,删除其间的 40 个整数。目标当然是使用现有内存块而不分配两个长度为 80 整数的新数组并从第一个数组复制,我想要的是将初始数组从 80 剪切到 120 并将剩下的视为两个单独的数组。
移动语义使用类似的低级方法来避免不必要的右值复制,所以我的问题是是否有一种低级方法可以实现类似的效果,但将已经存在的数据分配给多个对象。
例如,将指针分配到剪切位置和新元素开始的原始内存地址,强制它们充当使用相同数据的数组,已经分配并由初始数组填充?
当然,我也可以删除初始数组并获取其地址并使用它将其内存区域分配给新元素,但是是否可以告诉 C++ 在哪个确切地址上分配新对象?而且,有没有办法保证初始数组的数据在删除和将同一内存区域重新分配给新对象之间不会被破坏?
我读过的任何关于 c++ 的书籍都没有这种方法,但我觉得很可能存在一些低级技巧来达到预期的结果。