我有一组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个矩阵填充。
答案 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作为你的函数参数。