一组数组到一个新数组

时间:2014-09-12 08:20:53

标签: c++ arrays

我有一组2d数组让我们说a1 [w] [h],a2 [w] [h],a3 [w] [h],a4 [w] [h],a5 [w] [h ]来自一个功能。 现在我想将这些传递给另一个函数,为此我决定创建一个可以容纳这些的三维数组A [W] [h] [5]。现在我面临的问题是用所有五种不同的矩阵填充数组A.填写一个我可以用于循环,如

for(i=0;i<5;i++)
{
  for(j=0;j<w;j++)
  {
    for(k=0;k<h;k++)
    {
      A[j][k][i]=a1[j][k];
    }
  }
}

这个用a1填充数组A是否有任何方法可以使用for循环来实现它,以便A可以用所有5个矩阵填充。

3 个答案:

答案 0 :(得分:0)

AFAIK,没有简单的方法可以做到这一点。基本原因是a1..a5数组在某些相应的连续内存中,如果与运算符重叠,则可能不会。而新的3d数组应该是另一个大容量的内存。也许你可以做的事情就是malloc一个足够的内存来保存每个2d数组的内存副本。但结果就像Logar所说的那样,你的数组索引在第一个而不是最后一个。因此,您在帖子中所做的是用C ++语言完成此操作的最简单方法。

答案 1 :(得分:0)

您可以尝试使用指针数组,例如(*a)[5] = {a1, a2, a3, a4, a5},然后使用

A[j][k][i] = a[i][j*h+k]

答案 2 :(得分:-2)

如果您确定要获得一组5个阵列,为什么不这样做:

A[0] = a1;
A[1] = a2;
...
A[4] = a5;

它会用你的数组填充A,并且比3 for for循环更少贪心。

然后你只需要传递A作为你的函数参数。