簡體   English   中英

將一個鋸齒狀陣列復制到另一個上面

[英]Copy one jagged array ontop of another

我怎樣才能完成將一個鋸齒狀陣列復制到另一個? 例如,我有一個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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM