读取数组2维的另一种方式c++

read array 2 dimensions in another way C++

本文关键字:方式 c++ 另一种 数组 2维 读取      更新时间:2023-10-16

读取数组输入后:

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

表示"inputs"是一个二维数组: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

我想把这个二维数组读入一维数组:

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

也就是说,首先读取二维数组的所有第一个元素。

我怎样才能做到这一点?

把你的ij循环交换一下。

你所需要做的就是颠倒循环的顺序:

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];
   }
for(int i=0; i<3; i++)
   for(int j=0; j<2; j++)
   {
      allElements[counter++] = (int)inputs[j][i];
   }