2016-04-29 5 views
1

私はC++で多次元を作成するにはどうすればよいですか?

int frame[2] = {sequence[1]} 

を使用して、インデックスに最初の多次元配列をしようとするたびに、私は2 [[2]私は「int型(*)のために、このエラー」無効な変換を取得し、この配列

int sequence[2][3][2][2][50][2] = { 
{ 
    {1}, 
    {{ 
     {2, 4}, 
     {3, 5} 
    }, 
    {255,0,0} 
    } 
    }, 
    { 
    {2}, 
    {{ 
     {3, 4}, 
     {2, 6} 
    }, 
    {0,0,255} 
    } 
    } 
}; 

を持っています] [INT '「を' 50] [2] [-fpermissive]

は私が間違って何をしているのですか?

+5

あなたのセルのほとんどは使用されていません...なぜそのような配列を使用する必要がありますか? – Holt

+4

imhoは2つ以上の次元を持つものであり、過剰な過労となり、扱いが非常に困難です。ディメンションを平坦化するか、意味のあるデータ構造にカプセル化してください – user463035818

+4

OOPをサポートする言語を使用していますので、その配列ほど面倒なことを使う必要はありません。独自のパラメータとともに他のインスタンスを保持するクラス/構造体を作成します。そこには、あなたが好きなほど深いところに行くことができ、依然として秩序感を維持することができます。 – TheFooBarWay

答えて

1

私はインデックスにしようとするたびに最初の多次元配列は、

int frame[2] = {sequence[1]} 

を使用して、あなたが使用する構文を簡素化してみましょう:

int frame[2] = {/*list of ints*/} 

これは、整数の中括弧で囲まれたリストを使用して、2 intの1次元配列を初期化します。

arityがkの最も外側の多次元配列の要素は、多次元配列(アリティがk-1)です。 intではありません。

したがって、多次元配列をどのようにインデックスするかは問題ありません。何が問題なのですか?多次元配列を最初の値として持つintの場合、配列を初期化しようとしています。

どのように初期化する必要がありますか?

多次元配列内のどの整数値を初期化に使用するかは明確ではないため、答えはありません。

int frame[2] = {sequence[0][0][0][0][0][0], sequence[0][0][0][0][0][1]}; 

それは最も外側の配列の最初の部分配列の最初の部分配列の最初の部分配列の最初の部分配列の最初のサブアレイの値を使用する:

ここframeを初期化するための構文的に正しい方法です。

+0

どのようにそれを初期化する必要がありますか? –

+0

@JonathanYuそれはあなたがそれを初期化したいかによって決まります。 5次元配列 'sequence [1] '内のどの整数値が使用しようとしているのかは明らかではありません。確かに2よりも多くの値があり、それはどれくらいのものが 'frame'に収まるかです。 – user2079303

+0

@JonathanYuとにかく、私は少なくとも構文的に正しい例を追加しました。 – user2079303

関連する問題