我正在努力想出执行此操作的最优雅/最简单的方法。也许我有点想多了。
假设我有一个 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 循环,但今天早上我似乎无法在脑海中想出办法来做到这一点。
有什么建议吗?
编辑:
抱歉,这是我目前的处理方式。只是想知道是否有更好的方法。
这实际上是我正在做的统一工作的一部分——“RoomDoors”是我们较小的数组,“map”是它要移入的较大数组。它是随机 map 生成器的一部分,需要知道房间中瓷砖的哪些“边缘”上有可以连接到其他房间的门。 RoomDoors 存储 4 个 bool 值,每个方向一个,告诉我那里是否有一扇门。
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];
}
最佳答案
我认为你不能做得更好,只需删除不必要的分配即可:
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];
关于c# - 将较小的数组复制到较大的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28089066/