小编new*_*ode的帖子

从一个阵列到另一个阵列的选择性浅拷贝

假设我有2个不同大小的数组,即

int arr[] = {0,1,2,3,4,5,6,7,8,9};
int *arr2 = new int[5];
Run Code Online (Sandbox Code Playgroud)

我想浅层复制其中一些,Deep拷贝等效

int j =0;    
if(!(i%2))
    {
        arr2[j]=arr[i];
        j++;
    }
Run Code Online (Sandbox Code Playgroud)

现在,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];
Run Code Online (Sandbox Code Playgroud)

因为这就是我的代码设置方式.并且该操作是低负载的.

c++ arrays shallow-copy

6
推荐指数
1
解决办法
240
查看次数

标签 统计

arrays ×1

c++ ×1

shallow-copy ×1