首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理中的两个二维数组之间的深度复制

处理中的两个二维数组之间的深度复制
EN

Stack Overflow用户
提问于 2013-04-18 05:16:40
回答 1查看 1.3K关注 0票数 0

对于我正在做的一个项目,我有两个由2D数组组成的网格,其中一个允许用户在其中绘制图像,另一个显示提交的最后一个图像。然而,我的代码正在对它进行浅层复制,而不是深层复制,我需要在处理过程中找到一种深层复制的方法。下面是我的浅拷贝代码的一小段:

代码语言:javascript
复制
   for (int i = 0; i < cols; i++) {
     for (int j = 0; j < rows; j++) {
     mainGrid[i][j] = userGrid[i][j];
    }
  }

在处理过程中,最简单的方法是什么?我一直在广泛地寻找将userGrid中的所有内容深度复制到mainGrid中的最简单的方法,比如使用Java Deep-Copy库,但我不太确定如何使用这个库的工具将一个2D数组复制到另一个2D数组中。

EN

回答 1

Stack Overflow用户

发布于 2013-04-18 21:43:01

我看到的最简单的选择是使用arrayCopy(),它很灵活,而且是为此而设计的。下面是一个快速演示:

代码语言:javascript
复制
int nx = 5;
int ny = 5;
int[][] mainGrid;
int[][] userGrid;

void setup(){
  //init
  mainGrid = new int[nx][ny];
  userGrid = new int[nx][ny];
  //populate with dummy data to test
  for(int y = 0 ; y < ny; y++){
    for(int x = 0; x < nx; x++){
      userGrid[x][y] = round(random(nx)+random(ny));
    }
  } 

  println("userGrid:\n"+print2DArray(userGrid,nx,ny,true));

  arrayCopy(userGrid,mainGrid);//copy userGrid into mainGrid

  println("mainGrid:\n"+print2DArray(mainGrid,nx,ny,true));
}
//utility to pretty print 2D arrays 
String print2DArray(int[][] arr,int sx,int sy,boolean printIds){
  String out = "";
  for(int i = 0 ; i < sx*sy; i++){
    int x = i/sx;
    int y = i%sx;
    boolean isLastOnLine = i%sx == sx-1;
    out += (printIds ? "["+x+"]"+"["+y+"]:" : "")+arr[x][y]+(isLastOnLine ? "":",");
    if(isLastOnLine) out += "\n"; 
  }
  return out;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16070411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档