質問
1つのギザギザの配列を別のアレイにコピーするにはどうすればよいですか?たとえば、5x7の配列があります。
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, 0, 0, 0
0, 0, 0, 0, 0, 0, 0
および4x3配列:
0,1,1,0
1,1,1,1
0,1,1,0
すべてのゼロ配列で(1,1)などの特定の開始点を指定し、次のような結果が得られるように、次の結果が得られます。
0, 0, 0, 0, 0, 0, 0
0, 0, 1, 1, 0, 0, 0
0, 1, 1, 1, 1, 0, 0
0, 0, 1, 1, 0, 0, 0
0, 0, 0, 0, 0, 0, 0
これを行うための最良の方法は何でしょうか?
解決
例の四角い性質のため、これはギザギザの代わりに2Dアレイのより適しているようです。しかし、いずれにせよ、あなたは確かに昔ながらの方法でそれを行い、それをループすることができます。 (テストされていない)のようなもの
for (int i = 0; i < secondArray.Length; i++)
{
for (int j = 0; j < secondArray[0].Length; j++)
{
firstArray[startingRow + i][startingColumn + j] = secondArray[i][j];
}
}
編集: マークのように、私はわずかに改善し、わずかに異なりましたが、同じ線に沿っていました。
for (int i = 0; i < secondArray.Length; i++)
{
secondArray[i].CopyTo(firstArray[startingRow + i], startingColumn);
}
他のヒント
これは、入力が長方形でなくても機能するはずです。
void copy(int[][] source, int[][] destination, int startRow, int startCol)
{
for (int i = 0; i < source.Length; ++i)
{
int[] row = source[i];
Array.Copy(row, 0, destination[i + startRow], startCol, row.Length);
}
}
所属していません StackOverflow