3

あるジャグ配列を別の配列にコピーするにはどうすればよいですか?たとえば、次の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)などの特定の開始点を指定し、その上に2番目の配列をコピーして、次のような結果が得られるようにしたいと思います。

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

これを行うための最良の方法は何でしょうか?

4

2 に答える 2

2

例の2乗の性質により、これはギザギザではなく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);
}
于 2010-03-31T01:34:08.740 に答える
2

これは、入力が長方形でない場合でも機能するはずです。

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);
    }
}
于 2010-03-31T01:40:53.407 に答える