2011-11-14 46 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]; 
    }