假设我有两个不同大小的数组,即:
我想要浅拷贝其中一些, 深拷贝的等价方法为:
int arr[] = {0,1,2,3,4,5,6,7,8,9};
int *arr2 = new int[5];
我想要浅拷贝其中一些, 深拷贝的等价方法为:
int j =0;
if(!(i%2))
{
arr2[j]=arr[i];
j++;
}
现在,打印arr2的结果是:0,2,4,6,8。
我想要浅拷贝的原因是,我希望arr2能随着arr的任何更改而更新。
也就是说,如果我循环并平方arr中的所有元素
我希望arr2输出:0、4、16、36、64
这两个数组是同一个类的一部分,其中一个是我的多边形信息,另一个是数据驱动的。arr实际上有4000多个元素,而arr2则接近3000个。目前,我的算法使用深拷贝效果很好。但是,因为我每次更新帧需要深拷贝3000个元素,我正在浪费资源,并且想知道是否可以通过浅拷贝来完成这项工作,以便我不必每帧都更新arr2。我的代码需要这样工作,arr实际上具有arr2的重复值。arr2是一个点列表,可以进行动画处理。然后将数据复制到arr中,该数组保存顶点的位置数据。这是因为arr包含多个bezier路径,其中一些与另一个路径共享一个或多个边缘。但是我希望在动画处理时忽略它,否则表面会出现断裂。
重要的是,复制涉及索引,例如
arr2[j]=arr[i];
因为这是我的代码设置方式。 而且操作需要低负载。
std::array
的类,其中包含operator[]
,可以正确引用原始内容。有点像模型-视图的东西。 - hyde