ジャグ配列とは?ジャグ配列の初期化の仕方について(C#)

  • このエントリーをはてなブックマークに追加

スポンサーリンク

※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~

ジャグ配列とは

ジャグ配列とは、配列の中の要素が配列となっている配列です。

そのため、「配列の配列」と呼ばれることがあります。

ジャグ配列の要素(つまり、配列の中の配列)において、要素数が異なっていても問題ありません。

配列の宣言と初期化の仕方

ジャグ配列の宣言と初期化は以下のように行うことができます。

ここでは、以下のような表をジャグ配列で扱うことを考えます。

  名前 性別 特技
  [0] [1] [2]
[0] 浅野 剣道
[1] 貝塚    
[2] 坂上  
[3] 高原 野球
[4] 中条    

※対応するインデックス

  [0] [1] [2]
[0] [0][0] [0][1] [0][2]
[1] [1][0]    
[2] [2][0] [2][1]  
[3] [3][0] [3][1] [3][2]
[4] [4][0]    

※このような行の要素がバラバラな場合にジャグ配列は有効です。

パターン1

string[][] student_list = {
new string[]{ “浅野”, “男”, “剣道” },
new string[]{ “貝塚” },
new string[]{ “坂上”, “女” },
new string[]{ “高原”, “男”, “野球” },
new string[]{ “中条”}
};

パターン1a

string[][] student_list = {
new string[3]{ “浅野”, “男”, “剣道” },
new string[1]{ “貝塚” },
new string[2]{ “坂上”, “女” },
new string[3]{ “高原”, “男”, “野球” },
new string[1]{ “中条”}
};

パターン2

string[][] student_list = new string[5][] {
new string[]{ “浅野”, “男”, “剣道” },
new string[]{ “貝塚” },
new string[]{ “坂上”, “女” },
new string[]{ “高原”, “男”, “野球” },
new string[]{ “中条”}
};

パターン2a

string[][] student_list = new string[5][] {
new string[3]{ “浅野”, “男”, “剣道” },
new string[1]{ “貝塚” },
new string[2]{ “坂上”, “女” },
new string[3]{ “高原”, “男”, “野球” },
new string[1]{ “中条”}
};

パターン3

string[][] student_list = new string[5][];
student_list[0] = new string[] { “浅野”, “男”, “剣道” };
student_list[1] = new string[] { “貝塚” };
student_list[2] = new string[] { “坂上”, “女” };
student_list[3] = new string[] { “高原”, “男”, “野球” };
student_list[4] = new string[] { “中条” };

パターン3a

string[][] student_list = new string[5][];
student_list[0] = new string[3] { “浅野”, “男”, “剣道” };
student_list[1] = new string[1] { “貝塚” };
student_list[2] = new string[2] { “坂上”, “女” };
student_list[3] = new string[3] { “高原”, “男”, “野球” };
student_list[4] = new string[1] { “中条” };

パターン4

string[][] student_list;
student_list = new string[5][];
student_list[0] = new string[] { “浅野”, “男”, “剣道” };
student_list[1] = new string[] { “貝塚” };
student_list[2] = new string[] { “坂上”, “女” };
student_list[3] = new string[] { “高原”, “男”, “野球” };
student_list[4] = new string[] { “中条” };

パターン4a

string[][] student_list;
student_list = new string[5][];
student_list[0] = new string[3] { “浅野”, “男”, “剣道” };
student_list[1] = new string[1] { “貝塚” };
student_list[2] = new string[2] { “坂上”, “女” };
student_list[3] = new string[3] { “高原”, “男”, “野球” };
student_list[4] = new string[1] { “中条” };

パターン5

string[][] student_list = new string[5][];
student_list[0] = new string[3];
student_list[0][0] = “浅野”;
student_list[0][1] = “男”;
student_list[0][2] = “剣道”;
student_list[1] = new string[1];
student_list[1][0] = “貝塚”;
student_list[2] = new string[2];
student_list[2][0] = “坂上”;
student_list[2][1] = “女”;
student_list[3] = new string[3];
student_list[3][0] = “高原”;
student_list[3][1] = “男”;
student_list[3][2] = “野球”;
student_list[4] = new string[1];
student_list[4][0] = “中条”;

パターン5′

string[][] student_list;
student_list = new string[5][];
student_list[0] = new string[3];
student_list[0][0] = “浅野”;
student_list[0][1] = “男”;
student_list[0][2] = “剣道”;
student_list[1] = new string[1];
student_list[1][0] = “貝塚”;
student_list[2] = new string[2];
student_list[2][0] = “坂上”;
student_list[2][1] = “女”;
student_list[3] = new string[3];
student_list[3][0] = “高原”;
student_list[3][1] = “男”;
student_list[3][2] = “野球”;
student_list[4] = new string[1];
student_list[4][0] = “中条”;

パターン1~2はジャグ配列の宣言と初期化を同時に行っています。

パターン3~5はジャグ配列の宣言と初期化を分けて行っています。

特に、パターン5(5′)は配列の中の配列の各要素に対して、初期値を入れています。

配列の要素を出力

配列の中の配列の要素を出力したい場合は以下のように、ループ文が2つ必要になります。

student_list.Lengthはジャグ配列の長さ(要素数)を意味します。ここでは値は5になります。

student_list[i].Lengthは配列の中の配列の長さ(要素数)を意味します。ここでは、配列の長さに応じて、値は1~3を取ります。

実行結果

浅野:男:剣道:
————
貝塚:
————
坂上:女:
————
高原:男:野球:
————
中条:
————

2次元以上の配列を要素に取る

ジャグ配列は2次元の配列を要素として扱うことができます。

例えば、以下のようなジャグ配列を宣言することができます。

int[][,] jagged_array = new int[3][,]
{
new int[,]{ {2,5}, {77,30}, {22,55} },
new int[,]{ {8,10} },
new int[,]{ {32,53}, {7,3} }
};

関連記事

Unityコースやアプリコースあり。無料体験の申込みあり。
  • このエントリーをはてなブックマークに追加

スポンサーリンク

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)