我努力想到最优雅/最简单的做法。也许我会稍微过度思考它。
让我们说我有一个5x5的整数数组,如下所示:
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
另一个2x2整数数组,如下所示:
5 1
2 3
我想在5x5数组中选择一个位置,比如说[2] [2],然后将第二个数组中的值放到第一个数组中,所以它看起来像这样:
0 0 0 0 0
0 0 0 0 0
0 0 5 1 0
0 0 2 3 0
0 0 0 0 0
我最初的想法是在确定要复制的数组中的行数/列数之后使用for循环,但是我似乎无法在今天早上解决这个问题。< / p>
有什么建议吗?
编辑:
对不起,这就是我目前的做法。只是想知道是否有更好的方式。
这实际上是我正在做的事情的一部分 - &#34; RoomDoors&#34;是我们较小的阵列,&#34; map&#34;是它被移入的更大阵列。它是随机地图生成器的一部分,需要知道哪些&#34;边缘&#34;房间里的瓷砖上有门,可以连接到其他房间。 RoomDoors存放4个布尔值,每个方向一个,告诉我那里是否有门。
roomDoors = previousRoom.GetComponent<RoomDataInterface> ().rooms; //2d array of room/door arrangement in new room
sizeCol = roomDoors.GetLength (0);
sizeRow = roomDoors.GetLength (1);
map [10, 10] = roomDoors [0, 0]; // top left of the room goes in the spot
for (int i = 0; i < sizeCol; i ++){
for (int j = 0; j < sizeRow; j ++) {
map [i + 10,j + 10] = roomDoors[i,j];
}
答案 0 :(得分:2)
我认为你可以做得更好,只需删除不必要的任务:
roomDoors = previousRoom.GetComponent<RoomDataInterface> ().rooms;
sizeCol = roomDoors.GetLength (0);
sizeRow = roomDoors.GetLength (1);
for (int i = 0; i < sizeCol; i ++)
for (int j = 0; j < sizeRow; j ++)
map [i + 10, j + 10] = roomDoors[i, j];
答案 1 :(得分:1)
该行
map [10, 10] = roomDoors [0, 0];
是多余的,因为循环的第一次迭代将执行相同的赋值。删除线将导致解决方案更小,更有效。