2010年12月7日火曜日

◆多次元配列と多段階配列(ジャグ配列)

PowerShell: ◆配列関連でも書いたが、いろいろなサイトを見ているとあまり区別していないケースが多いので少し補足。(多段階配列を指して多次元配列と呼んでいるケースが多いようだ)

多段階配列も多次元配列の一種なのかもしれないが、アクセスする文法が違うのでやはり区別したほうが良いものと思う。

PS>#多段階(ジャグ)配列
PS>$arrJag = @((New-Object string[] 2) , (New-Object int[] 3), (New-Object int[] 2))
PS>$arrJag[0][0] = "aaa"
PS>$arrJag[0][1] = "bbb"
PS>$arrJag[1][0] = 1
PS>$arrJag[1][1] = 2
PS>$arrJag[1][2] = 3
PS>$arrJag[2][0] = 4
PS>$arrJag[2][1] = 5
PS>Write-Host $arrJag
aaa bbb 1 2 3 4 5
PS>
PS>$arrJag = (("c","d"),(6,7,8),(9,0))
PS>Write-Host $arrJag
c d 6 7 8 9 0
PS>
PS>#多次元配列
PS>$arrMulti = New-Object "int[,]" 2,3
PS>$arrMulti.Count
6
PS>
PS>$arrMulti[0,0] = 1
PS>$arrMulti[0,1] = 2
PS>$arrMulti[0,2] = 3
PS>$arrMulti[1,0] = 4
PS>$arrMulti[1,1] = 5
PS>$arrMulti[1,2] = 6
PS>Write-Host $arrMulti
1 2 3 4 5 6
PS>$arrMulti[(1,0),(0,1)]
4
2

多段階配列とは、配列の個々の要素が配列になっている物。
上記の例の様にそれぞれで違うデータ型を取ることが出来る。
全体の要素数は個々の配列の要素数を足した値となる。

多次元配列とはスプレッドシートの様に次元を掛けあわせた形の配列。
要素のデータ型は一律。
全体の要素数は個々の配列の要素数を掛けた値となる。

といった違いがあるので表の様なデータを扱うには多次元配列。
そうでなければ多段階配列を使うと良いのだと思う。
多段階配列の方が必要な分しか領域が確保されないのでメモリー的には優位と思われる。

0 件のコメント:

コメントを投稿