2012-02-28 8 views
-1

2dim配列アレイで

int a[][5] = {{1},{1,2}}; 

「」その二次元のサイズと

a[0][1] 

がどのような値を有するであろう何ですか?

サイズについて話すのは理にかなっていますか、それとも「行」と「行」が異なるのでしょうか?

これは悪い考えですか?

+1

これは有効ではありません。最も遅い次元以外は、明示的に指定する必要があります。 –

+0

@ Kerrek SB – user695652

+1

ポインタをありがとう*すべてのエクステントを修正すると、イニシャライザをフラットリストとして書くことができます。しかし、私はあなたが内側の次元を空白にしておけばそれをすることはできないと思います。 –

答えて

1
コードで

int a[][5] = {{1},{1,2}}; 

最初の次元のサイズは2(外{}内の二つの要素があるため)であり、第2の次元のサイズは、初期化子で5 Unmentioned要素であるですゼロに初期化される。したがって、あなたのコードは次のようになります:

int a[][5] = {{1,0,0,0,0},{1,2,0,0,0}}; 
1

これは無効です。それも、コンパイルされません。

test.cc:1:9: error: declaration of ‘a’ as multidimensional array must have bounds for all dimensions except the first 
0

を使用すると、アレイと中括弧の初期化表記を使用している場合は、コードのその部分がちょうど与えるので、あなたは、あなたの配列つもり持っているすべての次元のためのすべての要素を指定する必要があります。あなたはコンパイル時エラーです。

異なるサイズのコンテナの配列を使用する場合は、ベクトルの配列、またはベクトルのベクトルを使用することを検討してください。それらを使用するには、#include <vector>を実行するだけです。

関連する問題