2011-11-14 67 views
0

讀取輸入到一個陣列中後:讀陣列2點的尺寸以另一種方式C++

std::vector<unsigned char *> inputs(elements); 

的「inputs」是一個2維陣列:inputs[3][2],然後讀此陣列出,這些值是:

inputs[0][0]=1 
inputs[0][1]=2 
inputs[1][0]=3 
inputs[1][1]=4 
inputs[2][0]=5 
inputs[2][1]=6 

我想讀此2維陣列成一個維陣列:

int counter=0; 
int * allElements = new int[6]; 

for(int i=0; i<3; i++) 
    for(int j=0; j<2; j++) 
    { 
     allElements[counter++] = (int)inputs[i][j]; 
    } 

這是讀取所有的元素融入到一個維數組傳統的方式,我相信,如果我讀的「allElements」這樣的元素:

for(int i=0; i<6; i++) 
    printf("%d ", allElements[i]); 

,它應該是:1 2 3 4 5 6

然而,我想讀二維數組的所有元素融入到一個維數組,這樣當我不喜歡這樣寫道:

for(int i=0; i<6; i++) 
    printf("%d ", allElements[i]); 

它應該是:1 3 5 2 4 6

換言之,首先讀取二維數組的所有第一個元素。

我該如何做到這一點?

+1

爲什麼使用'unsigned char *'而不是'vector '? – moshbear

回答

1

所有你需要做的是反向循環的順序:

int counter=0; 
int * allElements = new int[6]; 

for(int j=0; j<2; j++) 
    for(int i=0; i<3; i++) 
    { 
     allElements[counter++] = (int)inputs[i][j]; 
    } 

這應該做的伎倆。

2

只需交換您的ij循環即可。

0
for(int i=0; i<3; i++) 
    for(int j=0; j<2; j++) 
    { 
     allElements[counter++] = (int)inputs[j][i]; 
    }