4

GCCが私にこれを許可したとき、私は混乱しました:

int t[10][10][10][10][10];

最初は行を意味し、2番目は列を意味するint i[N][N]行列NxNです。Nまた、3番目は深さNint i[N][N][N]意味し、3次元配列を提供します。

int i[N][N][N][N]私は何を意味するのか、そしてそれを超えて何を意味するのか理解していません。

4番目の次元は時間ですが、それはここでは当てはまりません。

それで、これは、私が3番目のものに到達したときに、ロジックを削除できることを意味しますか?

4

6 に答える 6

27

ライブラリのアナロジーは、複数の次元の配列を視覚化するのに非常に役立つと思います。

  • 8次元配列はライブラリです
  • 7次元配列は図書館の床です
  • 6次元配列は、図書館の床にある部屋です。
  • 5次元配列は、図書館の床にある部屋の本棚です。
  • 4次元配列は、図書館の床にある部屋の本棚の棚です。
  • 3次元配列は、図書館の床にある部屋の本棚の棚にある本です。
  • 2次元配列は、図書館の床にある部屋の本棚の棚にある本のページです。
  • 1次元配列は、図書館の床にある部屋の本棚の棚にある本のページ上の線です。
  • 0次元配列は、図書館の床にある部屋の本棚の棚にある本のページの1行にある文字です。
于 2012-07-20T16:57:52.680 に答える
10

数学の世界では、次元の数は重要ではありません。最終的には、視覚化できなくなるポイントに到達します。

于 2012-07-20T16:55:04.777 に答える
8

寸法はあなたがそれらから作りたいものです。たとえば、深さと時間は、これらの概念を扱っている場合にのみ意味があります。

それは空間と時間についてである必要はありません。実際、C++標準ではそれらをエクステントと呼んでいます。

たとえば、10種類のチーズがあり、誰かが特定の順序でそれらを好む可能性を評価したいとします。int t[10][10][10][10][10];これを、それぞれ、好きなチーズ、2番目に好きなチーズ、3番目に好きなチーズ、4番目に好きなチーズ、5番目に好きなチーズ、最も嫌いなチーズを意味する範囲で、に保存できます。誰かが5-4-6-3-2-1の順序でチーズを好む可能性は、として表されt[5][4][6][3][2][1]ます。

重要なのは、言語はエクステントにドメインセマンティクスを付加しないということです。そうするのはあなた次第です。

于 2012-07-20T16:59:48.370 に答える
3

N次元配列は、C++だけのものではありません。数学、物理学、その他のさまざまな科学などに登場します。

次に例を示します。位置(x、y、z)、時間、および「どのユーザーがデータを生成したか」でデータにインデックスを付けたいとします。x1、y1、z1、time1で収集され、user1によって生成されたデータポイントの場合、それをに保存しdataArray[x1][y1][z1][time1][user1] = myNewDataます。

于 2012-07-20T16:57:12.833 に答える
1

プログラミングでは、世界を直接表現しようとしているのでない限り、従来のジオメトリの観点から多次元配列を考えないでください。連続する各「次元」は、配列を含む別の配列と考える方がよいでしょう。これが発生する可能性のあるいくつかのユースケースがあります。ただし、3次元以上を使用している場合は、配列または「配列の配列」とは考えられなくなります。3レベル以上の深さを必要とするものをプログラムする方法に近いので、ツリーを使用することをお勧めします。

一例として、ツリーがあります。ルートノードには、ノードもあるノードがあります。あなたが何かを分類したいのであれば、木は素晴らしいツールです。ランダムに入ってきたたくさんの数字を並べ替えたいとしましょう。ルートに入った最初の番号を作成します。最初の番号が5で、次の番号が7の場合、ルートノード5の「右側」に7を配置します。3を取得してから4を取得した場合は、3を5の「左」、次に3の「右」に4。このツリーを順番にトラバースする場合(常にツリーを左下に移動し、新しいノードがない場合にのみ上に移動してから右に移動します)。 )、ソートされたリストになります:3、4、5、7。

       5
    /    \
   3      7
     \
      4

ここでは、ツリー構造を見ることができます。これをCで行う場合は、次のような構造体を使用します(私は擬似コードを使用しています)。

struct Node{
     int val;
     Node left;
     Node right;
}

二分木(私が説明してきたこと)にはたくさんの資料がありますが、主に「空間の次元のような」配列の概念から離れて、要素を格納できる単なるデータ構造の概念から離れてほしいと思いました。二分木やその他のデータ構造が複雑すぎる場合があり、5次元以上の配列の方がデータの格納に便利な場合があります。今のところ例は思いつかないのですが、以前から使っていました。

于 2012-07-20T17:16:56.770 に答える
0

物理的な3次元の存在として、4、5、6(またはそれ以上)の物理的な次元が表すものを「視覚化」することはできません。

4次元は、私たちの知覚を、私たちが自然に知覚する高さ、幅、深さの方向に直交する4番目の方向に拡張します。
はい-ジオメトリがおかしくなった!!

このアイデアを感じてもらうために、このビデオでは、 カールセーガンが、2Dの世界に住む、完全に平らな2Dクリーチャー(小さな正方形)が不思議な3Dクリーチャーに遭遇したときの様子を想像しています。
この3Dクリーチャー(不審なことにリンゴに似ています)は、小さな正方形が「見る」ことができないこの神秘的な3次元に主に存在します。それは、その2D平面の世界と交差するリンゴのポイント、つまりその投影のみを認識します...

ビデオは今日の基準では古風に見えますが、物理学/幾何学の観点からは、私がそこに見た中で最も良い説明です。

于 2013-07-02T00:20:22.260 に答える