将数组读入另一个数组C ++

时间:2011-11-14 23:29:33

标签: c++

读取数组输入后

int * inputs;

inputs”是一维数组:inputs[6],然后读取此数组,值为:

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

我想将这个数组读入另一个一维数组:

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

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

这是将所有元素读入一维数组的传统方式,我相信如果我以这种方式阅读“allElements”的元素:

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

应该是:1 2 3 4 5 6

但是,我想将该数组的所有元素读入1维数组,这样当我这样做时:

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

应该是:1 3 5 2 4 6

我怎样才能达到这个目的?

3 个答案:

答案 0 :(得分:3)

int * allElements = new int[6];

for(int i=0; i<6; i+=2)
{
    allElements[i/2] = inputs[i];
    allElements[3+i/2] = inputs[i+1];
}

答案 1 :(得分:2)

怎么样:

for(int i=0; i<6; i++)
{
    allElements[i] = inputs[2*(i%3) + (i/3)];
}

想象一下inputs是一个二维数组,3x2,然后i%3是一个坐标,i / 3是另一个坐标。只需将其转换为2x3矩阵即可完成!

答案 2 :(得分:0)

const int size =6;
int inputs[size]={1,2,3,4,5,6};
int allElements[size];

...

  if (size % 2)
  {
      int middle=(size/2) +1;
      for(int i=0; i<size; i+=2)
      {   
          allElements[i/2] = inputs[i];
          if (i < size-2)
            allElements[middle+i/2] = inputs[i+1];          
      }      

  }
  else
  {
    int middle=size/2;
    for(int i=0; i<size; i+=2)
    { 
      allElements[i/2] = inputs[i];
      allElements[middle+i/2] = inputs[i+1];
    }      
  }

逻辑绝对可以简化。只是第一次尝试并让它独自一人。

如果希望它适用于1个案例

allElements[0]=inputs[0];      
allElements[1]=inputs[2];
allElements[2]=inputs[4];
allElements[3]=inputs[1];
allElements[4]=inputs[3];
allElements[5]=inputs[5];