首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以另一种方式读取数组2维C++

以另一种方式读取数组2维C++
EN

Stack Overflow用户
提问于 2011-11-15 06:25:33
回答 3查看 277关注 0票数 0

将输入读取到数组后:

代码语言:javascript
复制
std::vector<unsigned char *> inputs(elements);

"inputs“是一个二维数组:inputs[3][2],然后读出这个数组,值是:

代码语言:javascript
复制
inputs[0][0]=1
inputs[0][1]=2
inputs[1][0]=3
inputs[1][1]=4
inputs[2][0]=5
inputs[2][1]=6

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

代码语言:javascript
复制
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“的元素:

代码语言:javascript
复制
for(int i=0; i<6; i++)
   printf("%d ", allElements[i]);

它应该是:1 2 3 4 5 6

然而,我想把二维数组的所有元素读到一维数组中,这样当我这样做的时候:

代码语言:javascript
复制
for(int i=0; i<6; i++)
   printf("%d ", allElements[i]);

应该是:1 3 5 2 4 6

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

我怎样才能做到这一点呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-15 06:30:23

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

代码语言:javascript
复制
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];
   }

这应该能起到作用。

票数 1
EN

Stack Overflow用户

发布于 2011-11-15 06:28:13

只需交换ij循环即可。

票数 2
EN

Stack Overflow用户

发布于 2011-11-15 06:28:42

代码语言:javascript
复制
for(int i=0; i<3; i++)
   for(int j=0; j<2; j++)
   {
      allElements[counter++] = (int)inputs[j][i];
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8129084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档