0

重複の可能性:
C ++で配列を使用するにはどうすればよいですか?

サイズmxnの2D配列を使用する代わりに、サイズ'mn'の1D配列を使用することのメモリの問題や実行の問題、またはメリットやデメリットはありますか?

4

3 に答える 3

2

メモリでは、それらはまったく同じように表されます。違いはセマンティックです。マトリックスを操作している場合、要素に次のようにアクセスします

x[i][j]

よりも直感的です

x[i*n + j]
于 2012-09-10T18:54:07.743 に答える
1

配列 1D と 2D はどちらも、メモリの観点ではまったく同じです。唯一の違いは構文です。3D 配列は、問題を回避するロジックを設計する場合にのみ役立ちます。

例えば:

array x[m*n]
array x[m][n]

記憶で言えばどちらも同じ

于 2012-09-10T21:01:24.003 に答える
0

int の 2D 配列と int へのポインターを作成できます。

次に、ポインタを最初の要素のアドレスに設定できます

int* singleDimention=&twoDimension[0][0];

2D 座標に関係なくすべてのアイテムを処理する場合は、1 次元配列を使用する方が (わずかに) 高速になります。

numItems=n*m;
for(i=0;i<numItems;i++){
    do stuff with singleDimention[i];
}
于 2012-09-10T21:10:05.313 に答える