-3

Perlで3D(またはそれ以上の次元)配列を作成/シミュレートする方法はありますか?
Webで検索しようとしましたが、何も見つかりませんでした。

4

2 に答える 2

12

perldocperllolを見てください。これは、多次元データ構造の一種の名前である「リストのPerlリスト」の略です。

考えてみてください@array。の要素に単純な値を配置する代わりに、@array配列への参照を配置すると、配列の配列または2次元配列のように扱うことができるデータ構造が得られます。3Dが欲しいですか?問題ない。あなたはあなたが望むどんな深さにも行くことができます。

@array = (
    [ 'A', 'B', 'C' ],
    [ 'D', 'E', 'F' ],
    [ 'G', 'H', 'I' ],
); # A 2D structure represented as a LoLs.

@array = (
    [ [ 'A', 'B', 'C' ], [ 'D', 'E', 'F' ], [ 'G', 'H', 'I' ] ],
    [ [ 'J', 'K', 'L' ], [ 'M', 'N', 'O' ], [ 'P', 'Q', 'R' ] ],
    [ [ 'S', 'T', 'U' ], [ 'V', 'W', 'X' ], [ 'Y', 'Z', 'a' ] ],
); # A 3D structure.

@array = (
    [ [ [ 'A', 'B' ], [ 'C', 'D' ] ], [ [ 'E', 'F' ], [ 'G', 'H' ] ] ],
    [ [ [ 'I', 'J' ], [ 'K', 'L' ] ], [ [ 'M', 'N' ], [ 'O', 'P' ] ] ],
); # A 4D structure.

あなたの想像力と利用可能なRAMは、データ構造がどれほど複雑になるか、またはデータ構造がいくつの次元を保持できるかについての唯一の制約です。均一である必要はありません。

@array = ( [ 'a', 'b' ], 'c', [ 'd', 'e', [ 'f', 'g', 'h' ] ] );

リンクリストはどうですか?

$head->[ 'a', [ 'b', [ 'c', [ 'd', [ 'e', [ 'f', [ 'g', undef ] ] ] ] ] ] ];

そして、それらはすべて、配列参照と組み合わせた単純なスカラー値のみを扱っています。また、ハッシュ参照、コード参照、グロブ参照、オブジェクト参照、さらにはスカラー参照を試すこともできます。利用できる電力はたくさんあります。

その他の有用な読み物は、 perldoc perlreftutperldoc perlrefperldoc perldsc(データ構造クックブック)、および次の本です:中級PerlプログラミングPerl、さらにはPerlを使用したやや時代遅れのマスタリングアルゴリズム

于 2012-08-14T08:29:03.800 に答える
0

2次元配列は、他の配列への参照を持つ配列になります。perldocperllolには詳細なハウツーがあります。

この基本原理から、ハッシュの配列のハッシュの配列のように、より複雑なデータ構造を作成できます。

于 2012-08-14T08:28:20.453 に答える