私のクラスでは、Java でデータを作成して 5 次元配列に追加するプログラムを作成する必要があります。かなり簡単です。
しかし、私が聞きたいのは、5次元配列は実際のプログラミングで使用されていますか?
このような複雑な構造を使用するのは悪い設計ではないでしょうか? プログラマーは、より単純なデータ構造にすることに集中すべきではないでしょうか?
私のクラスでは、Java でデータを作成して 5 次元配列に追加するプログラムを作成する必要があります。かなり簡単です。
しかし、私が聞きたいのは、5次元配列は実際のプログラミングで使用されていますか?
このような複雑な構造を使用するのは悪い設計ではないでしょうか? プログラマーは、より単純なデータ構造にすることに集中すべきではないでしょうか?
なぜだめですか?
5 次元配列は、5 つのインデックスから 1 つの値へのマッピングです。この正確な要件がある場合、5 次元配列はおそらく最も効率的であり、このマッピングを実装する最も読みやすい方法です。
自然に発生するデータ構造と時期尚早に戦っても意味がありません。頭で考えたときにデータに 5 つの次元がある場合は、コードで 5D 配列を使用してモデル化することが最善の戦略です。
別のデータ構造を使用する唯一の理由は、5D 配列がたまたま非常にまばらである場合です。その性質上、配列はスペースを事前に積極的に割り当て、非常にまばらな構造ではメモリの使用量が標準以下になります。さらに、その一見標準以下のスペースの使用は、パフォーマンスの向上によって支払われる以上のものである可能性があります。数兆の CPU サイクルは悪くないかもしれません。
はい、使用されています。しかし、ウェブサイトのような単純なものについてはそれほどではありません。複雑な物理学 (一般相対性理論、計算化学、量子物理学) または数学的アプリケーションを作成する必要がある場合。そうするのに十分な理由があるかもしれません。例: Tensor アプリケーション
Matlab では、人々は常に 4d 行列を使用しています。
もちろん、インデックスを作成するためだけに高次元配列を使用する悪い例もあります。
悪い習慣の例:
$clothes["type"]["color"]["price"]["size"] = ...
@Renan はコメントでそれを言いました。高次元配列をどのように適用するかがすべてです。
私の経験では、通常、3D を超えるものはすべて嫌われます。通常、数値インデックスでインデックスを作成するよりも、クラス/構造体に分解し始める方が理にかなっています。数値的にインデックス可能な次元が 4 つを超えるデータセットを見たことがありません。先日float[][][][]
、計算に を使用した流体力学アプリケーションを調べました。
実際には、データが実際に5D であるかどうか、またはネストされたクラス/構造体としてより適切に表現できるものを配列にマッピングしているだけかどうかにかかっています。