簡體   English   中英

如何按列專業將1D數組轉換為2D

[英]How to convert 1D array to 2D by column major

說我有一個像int[] x = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}一維數組。
我想將它轉換為2D,它看起來像:

1 5  9 13  
2 6 10 14  
3 7 11 15  
4 8 12 16  

目前,我有

for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < Nb; j++)
        s[i][j] = x[i + j];
}

但是,這不起作用。 我該怎么做?

嘗試

for (int i = 0, k=0; i < 4; i++)
  for (int j = 0; j < Nb; j++)
    s[j][i] = x[k++]; // you may want s[i][j]

我認為流浪7是一個錯字?

因為我們希望內循環向下移動,而外部向右移動,所以你可以這樣做:

for i in (0..width)
   for j in (0..height)
      s[j][i] = x[i*height+j]

追蹤這個說明了它的工作原理:

s[0][0] = x[0*4+0] = x[0]
s[1][0] = x[0*4+1] = x[1]
...
s[0][1] = x[1*4+1] = x[5]

不知道Nb是什么,但你在閱讀初始陣列時已經離開了。 嘗試這樣的事情:

for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++)
        s[j][i] = x[i*4 + j];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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