新しい配列への配列のセット - c ++、配列

私は二次元配列のセットを持って言うことができます関数からa1 [w] [h]、a2 [w] [h]、a3 [w] [h]、a4 [w] [h]、a5 [w] [h] 今私は別の関数にこれらを渡すことを望んでいます。この目的のために、私はA [w] [h] [5]と言うことができる3D配列を作成することにしました。今私が直面している問題は、5つの異なる行列すべてで配列Aを埋めることです。私はループのように私が使用できる1つでそれを埋めるために

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];
}
}
}

これは配列Aをa1だけで満たします。これは、forループを使用して、Aが5つのすべての行列で満たすことができるような方法で行います。

回答:

回答№1では-2

あなたは5つの配列のセットを取得する場合は、なぜだけではない:

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

それはあなたの配列でAを埋めるだろうし、forループよりも欲張りが少なくなるでしょう。

それから、あなたの関数の引数としてAを渡すだけです。


回答№2の場合は0

AFAIK、それを行う簡単な方法はありません。本質的な理由は、a1..a5配列がある程度対応しているということです。一方、新しい3dアレイはもう1つのメモリの大部分にあるはずです。おそらく、各2d配列からメモリコピーを保持するのに十分なメモリを確保するというトリックを行うことができます。しかし、その結果はLogarが最初にあなたの配列のインデックスを最後にするのではないということです。だからあなたの記事では、C ++言語でそれを行うための最も簡単な方法があります。


回答№3の場合は0

あなたは、例えば、 (*a)[5] = {a1, a2, a3, a4, a5}、次に使用する

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

メニュー
最も人気のある