Visual Basic におけるジャグ配列
更新 : 2007 年 11 月
各要素の配列自体が配列となっているものは、配列の配列、またはジャグ配列と呼ばれます。要素として配列を持つことは、1 つの配列に対して複数のインデックスを持つ多次元配列とは異なることに注意してください。
ジャグの意味
アプリケーションのデータ構造は、2 次元の配列であっても四角形の 2 次元配列ではない場合があります。たとえば、月の配列があり、その各要素が日の配列である場合があります。月によって日数が異なるため、月要素は四角形の 2 次元配列を形成しません。このような場合に、多次元配列の代わりにジャグ配列を使用できます。
例
倍精度浮動小数点数型 (Double) (Visual Basic) の要素が配列となっている配列を保持する配列変数を宣言する例を、次に示します。配列 sales の各要素自体が、月を表す配列となっています。各月の配列は、その月の各日付ごとの値を保持しています。
Dim sales()() As Double = New Double(11)() {}
Dim month As Integer
Dim days As Integer
For month = 0 To 11
days = DateTime.DaysInMonth(Year(Now), month + 1)
sales(month) = New Double(days - 1) {}
Next month
sales の宣言の New 句は、配列変数を 12 要素の配列に設定します。配列の各要素の型は Double() で、Double の要素を配列として持っています。For ループによって、今年 (Year(Now)) の各月の日数を決定し、対応する sales の要素を適切な長さの (Double) の配列に設定します。
この前の例では、ジャグ配列は 2 次元配列と比べて、7 つ少ない要素 (閏年の場合は 6 つ少ない要素) を保存します。極端な場合には、メモリを大幅に節約できます。