質問

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);
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top