C# ジャグ配列
C# ジャグ配列
このチュートリアルでは、C# のジャグ配列について学習します。例を使って、ジャグ配列の宣言、初期化、およびアクセスを学びます。
C# では、ジャグ配列は複数の配列を要素として構成されます。ただし、多次元配列とは異なり、ジャグ配列内の各配列は異なるサイズにすることができます。
ジャグ配列について学ぶ前に、
- C# 配列
- C# 多次元配列
C# ジャグ配列宣言
C# でジャグ配列を宣言する構文は次のとおりです。
dataType[ ][ ] nameOfArray = new dataType[rows][ ];
例を見てみましょう。
// declare jagged array
int[ ][ ] jaggedArray = new int[2][ ];
ここで、
int
- 配列のデータ型[][]
- ジャグ配列を表すjaggedArray
- ジャグ配列の名前[2][]
- ジャグ配列内の要素 (配列) の数を表します
ジャグ配列の各要素も配列であることがわかっているため、個々の配列のサイズを設定できます。たとえば、
// set size of the first array as 3
jaggedArray[0] = new int[3];
// set size of second array as 2
jaggedArray[1] = new int[2];
ジャグ配列の初期化
ジャグ配列を初期化するには、さまざまな方法があります。たとえば、
<強い>1.インデックス番号の使用
ジャグ配列を宣言したら、インデックス番号を使用して初期化できます。たとえば、
// initialize the first array
jaggedArray[0][0] = 1;
jaggedArray[0][1] = 3;
jaggedArray[0][2] = 5;
// initialize the second array
jaggedArray[1][0] = 2;
jaggedArray[1][1] = 4;
ここで、
- 最初の角かっこのインデックスは、ジャグ配列要素のインデックスを表します
- 2 番目の角かっこのインデックスは、ジャグ配列の各要素内の要素のインデックスを表します
<強い>2.配列要素のサイズを設定せずに初期化
// declaring string jagged array
int[ ][ ] jaggedArray = new int[2] [ ];
// initialize each array
jaggedArray[0] = new int[] {1, 3, 5};
jaggedArray[1] = new int[] {2, 4};
<強い>3.ジャグ配列宣言時の初期化
int[ ][ ] jaggedArray = {
new int[ ] {10, 20, 30},
new int[ ] {11, 22},
new int[ ] {88, 99}
};
ジャグ配列の要素へのアクセス
インデックス番号を使用して、ジャグ配列の要素にアクセスできます。たとえば、
// access first element of second array
jaggedArray[1][0];
// access second element of the second array
jaggedArray[1][1];
// access second element of the first array
jaggedArray[0][1];
例:C# ジャグ配列
using System;
namespace JaggedArray {
class Program {
static void Main(string[] args) {
// create a jagged array
int[ ][ ] jaggedArray = {
new int[] {1, 3, 5},
new int[] {2, 4},
};
// print elements of jagged array
Console.WriteLine("jaggedArray[1][0]: " + jaggedArray[1][0]);
Console.WriteLine("jaggedArray[1][1]: " + jaggedArray[1][1]);
Console.WriteLine("jaggedArray[0][2]: " + jaggedArray[0][2]);
Console.ReadLine();
}
}
}
出力
jaggedArray[1][0]: 2 jaggedArray[1][1]: 4 jaggedArray[0][2]: 5
ここでは、ギザギザの配列の中で、
jaggedArray[1][0]
- 2 番目の配列の最初の要素jaggedArray[1][1]
- 2 番目の配列の 2 番目の要素jaggedArray[0][2]
- 最初の配列の 3 番目の要素
ジャグ配列の繰り返し
C# では、ループを使用して、ジャグ配列の各要素を反復処理できます。たとえば、
using System;
namespace JaggedArray {
class Program {
static void Main(string[] args) {
// declare a jagged array
int[][] jaggedArray = new int[2][];
// set size of Jagged Array Elements
jaggedArray[0] = new int[3];
jaggedArray[1] = new int[2];
// initialize the first array
jaggedArray[0][0] = 1;
jaggedArray[0][1] = 3;
jaggedArray[0][2] = 5;
// initialize the second array
jaggedArray[1][0] = 2;
jaggedArray[1][1] = 2;
// outer for loop
for (int i = 0; i < jaggedArray.Length; i++) {
Console.Write("Element "+ i +": ");
// inner for loop
for (int j = 0; j < jaggedArray[i].Length; j++) {
Console.Write(jaggedArray[i][j] + " ");
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}
出力
Element 0: 1 3 5 Element 1: 2 2
上記の例では、ネストされた for ループを使用して、ジャグ配列を反復処理しました。ここで、
<強い>1.外側の for ループ
- ジャグ配列の要素 (配列) にアクセスする
jaggedArray.Length
- ジャグ配列のサイズを与える
<強い>2.内部 for ループ
- ジャグ配列内の個々の配列の要素にアクセスします。
jaggedArray[i].Length
-ith
の要素のサイズを指定します ジャグ配列内の配列
多次元配列によるジャグ配列
C# では、多次元配列をジャグ配列要素として使用することもできます。たとえば、
int[ ][ , ] jaggedArrayTwoD = new int[2][ , ] {
new int[,] { {1, 8}, {6, 7} },
new int[,] { {0, 3}, {5, 6}, {9, 10} }
};
ここで、ジャグ配列の各要素は多次元配列です:
new int[,] { {1, 8}, {6, 7} }
- 2 つの要素を持つ 2D 配列new int[ , ] { {0, 3}, {5, 6}, {9, 10} }
- 3 つの要素を持つ 2D 配列
例を見てみましょう。
using System;
namespace JaggedArray {
class Program {
static void Main(string[] args) {
// declare and initialize jagged array with 2D array
int[][,] jaggedArray = new int[3][ , ] {
new int[ , ] { {1, 8}, {6, 7} },
new int[ , ] { {0, 3}, {5, 6}, {9, 10} },
new int[ , ] { {11, 23}, {100, 88}, {0, 10} }
};
Console.WriteLine(jaggedArray[0][0, 1]);
Console.WriteLine(jaggedArray[1][2, 1]);
Console.WriteLine(jaggedArray[2][1, 0]);
Console.ReadLine();
}
}
}
出力
8 10 100
上記の例のコードに注目してください。
jaggedArray[0][0, 1]
ここで、
[0]
- ジャグ配列の最初の要素 (2D 配列) を表します[0, 1]
- 2D 配列内の最初の配列の 2 番目の要素を表します
C言語