はじめに
前回は、配列変数(特に1次元配列)について学びました。
今回は、多次元配列について学びます。
目次
多次元配列とは
前回、1次元配列は、1つの箱の中に「しきり」を付けて複数のデータをいれられる変数であることを説明しました。
1次元以上の配列(つまり2次元や3次元といった配列)は、多次元配列と呼びます。
例えば、2次元配列は、1つの箱に縦と横の「しきり」を付けたイメージです。学校にある下駄箱のような感じです。
3次元配列は、その下駄箱が複数集まったイメージです。2次元配列が1クラス分だとすると、複数のクラス分の下駄箱が3次元配列ということになります。
※4次元以上の配列も作成することができますが、コードで書くと可読性が悪く現実的ではありません。使用したとしても3次元配列までにとどめておくのが一般的です。
多次元配列の宣言
多次元配列の宣言書式を以下に示します。
C#における多次元配列の宣言
データ型[,] 変数名 = new データ型[要素数, 要素数]; // 2次元配列 データ型[,,] 変数名 = new データ型[要素数, 要素数, 要素数]; // 3次元配列
VBにおける多次元配列の宣言
Dim 変数名(要素数 - 1, 要素数 - 1) As データ型 '2次元配列の宣言 Dim 変数名(要素数 - 1, 要素数 - 1, 要素数 - 1) As データ型 '3次元配列の宣言
Javaにおける多次元配列の宣言
データ型[][] 変数名 = new データ型[要素数][要素数]; // 2次元配列 データ型[][][] 変数名 = new データ型[要素数][要素数][要素数]; // 3次元配列
※Swiftについては多次元配列の初期化で説明します
多次元配列の宣言と値の代入例
多次元配列の宣言方法がわかりましたので、実際の使用方法をみていきましょう。
以下は、2次元配列と3次元配列の宣言と値を代入する例です。
C#における2次元配列と3次元配列の使用例
// 2次元配列の宣言 int[,] data2d = new int[2, 3]; // 2次元配列へのデータの代入 data2d[0, 0] = 1; data2d[0, 1] = 2; data2d[0, 2] = 3; data2d[1, 0] = 4; data2d[1, 1] = 5; data2d[1, 2] = 6; // 3次元配列の宣言 int[,,] data3d = new int[3, 2, 3]; // 3次元配列へのデータの代入 data3d[0, 0, 0] = 1; data3d[0, 0, 1] = 2; data3d[0, 0, 2] = 3; data3d[0, 1, 0] = 4; data3d[0, 1, 1] = 5; data3d[0, 1, 2] = 6; data3d[1, 0, 0] = 7; data3d[1, 0, 1] = 8; data3d[1, 0, 2] = 9; data3d[1, 1, 0] = 10; data3d[1, 1, 1] = 11; data3d[1, 1, 2] = 12; data3d[2, 0, 0] = 13; data3d[2, 0, 1] = 14; data3d[2, 0, 2] = 15; data3d[2, 1, 0] = 16; data3d[2, 1, 1] = 17; data3d[2, 1, 2] = 18;
上記コードをイメージで表すと下図のようになります。
その他の言語のコード例を以下に示します。
VB.NETにおける2次元配列と3次元配列の使用例
'2次元配列の宣言 Dim data2d(1, 2) As Integer '2次元配列へのデータの代入 data2d(0, 0) = 1 data2d(0, 1) = 2 data2d(0, 2) = 3 data2d(1, 0) = 4 data2d(1, 1) = 5 data2d(1, 2) = 6 '3次元配列の宣言 Dim data3d(2, 1, 2) As Integer '3次元配列へのデータの代入 data3d(0, 0, 0) = 1 data3d(0, 0, 1) = 2 data3d(0, 0, 2) = 3 data3d(0, 1, 0) = 4 data3d(0, 1, 1) = 5 data3d(0, 1, 2) = 6 data3d(1, 0, 0) = 7 data3d(1, 0, 1) = 8 data3d(1, 0, 2) = 9 data3d(1, 1, 0) = 10 data3d(1, 1, 1) = 11 data3d(1, 1, 2) = 12 data3d(2, 0, 0) = 13 data3d(2, 0, 1) = 14 data3d(2, 0, 2) = 15 data3d(2, 1, 0) = 16 data3d(2, 1, 1) = 17 data3d(2, 1, 2) = 18
Javaにおける2次元配列と3次元配列の使用例
// 2次元配列の宣言 int[][] data2d = new int[2][3]; // 2次元配列へのデータの代入 data2d[0][0] = 1; data2d[0][1] = 2; data2d[0][2] = 3; data2d[1][0] = 4; data2d[1][1] = 5; data2d[1][2] = 6; // 3次元配列の宣言 int[][][] data3d = new int[3][2][3]; // 3次元配列へのデータの代入 data3d[0][0][0] = 1; data3d[0][0][1] = 2; data3d[0][0][2] = 3; data3d[0][1][0] = 4; data3d[0][1][1] = 5; data3d[0][1][2] = 6; data3d[1][0][0] = 7; data3d[1][0][1] = 8; data3d[1][0][2] = 9; data3d[1][1][0] = 10; data3d[1][1][1] = 11; data3d[1][1][2] = 12; data3d[2][0][0] = 13; data3d[2][0][1] = 14; data3d[2][0][2] = 15; data3d[2][1][0] = 16; data3d[2][1][1] = 17; data3d[2][1][2] = 18;
多次元配列の初期化
先ほどの例では、1.多次元配列を宣言、2.値を代入する、という手順でした。
多次元配列は、他の変数同様に、宣言と初期化を同時に行うことができます。先ほどのコードを、初期化で行う例を示します。
C#における多次元配列の初期化
// 2次元配列の初期化 int[,] data2d = { {1, 2, 3}, {4, 5, 6} }; // 3次元配列の初期化 int[,,] data3d = { { {1, 2, 3}, {4, 5, 6} }, { {7, 8, 9}, {10, 11, 12} }, { {13, 14, 15}, {16, 17, 18} } };
VB.NETにおける多次元配列の初期化
'2次元配列の初期化 Dim data2d(,) As Integer = { {1, 2, 3}, {4, 5, 6} } '3次元配列の初期化 Dim data3d(,,) As Integer = { { {1, 2, 3}, {4, 5, 6} }, { {7, 8, 9}, {10, 11, 12} }, { {13, 14, 15}, {16, 17, 18} } }
Javaにおける多次元配列の初期化
// 2次元配列の初期化 int[][] data2d = { {1, 2, 3}, {4, 5, 6} }; // 3次元配列の初期化 int[][][] data3d = { { {1, 2, 3}, {4, 5, 6} }, { {7, 8, 9}, {10, 11, 12} }, { {13, 14, 15}, {16, 17, 18} } };
Swiftにおける多次元配列の初期化
let data2d:[[Int]] = [ [1, 2, 3], [4, 5, 6] ] let data3d:[[[Int]]] = [ [ [1, 2, 3], [4, 5, 6] ], [ [7, 8, 9], [10, 11, 12] ], [ [13, 14, 15], [16, 17, 18] ] ]
型推論による多次元配列の初期化
最後に型推論による多次元配列の初期化方法を確認しましょう。
以下にコード例を示します。
C#における型推論による多次元配列の初期化
// 型推論による2次元配列の初期化 var data2d = new [,]{ {1, 2, 3}, {4, 5, 6} }; // 型推論による3次元配列の初期化 var data3d = new [,,]{ { {1, 2, 3}, {4, 5, 6} }, { {7, 8, 9}, {10, 11, 12} }, { {13, 14, 15}, {16, 17, 18} } };
VB.NETにおける型推論による多次元配列の初期化
' 型推論による2次元配列の初期化 Dim data2d(,) = { {1, 2, 3}, {4, 5, 6} } ' 型推論による3次元配列の初期化 Dim data3d(,,) = { { {1, 2, 3}, {4, 5, 6} }, { {7, 8, 9}, {10, 11, 12} }, { {13, 14, 15}, {16, 17, 18} } }
Javaにおける型推論による多次元配列の初期化
※Javaは、型推論を使用して多次元配列の初期化を行えません
Swiftにおける型推論による多次元配列の初期化
// 型推論による2次元配列の初期化 let data2d = [ [1, 2, 3], [4, 5, 6] ] // 型推論による3次元配列の初期化 let data3d = [ [ [1, 2, 3], [4, 5, 6] ], [ [7, 8, 9], [10, 11, 12] ], [ [13, 14, 15], [16, 17, 18] ] ]
まとめ
多次元配列の宣言方法は、言語ごとに特徴があります。宣言または初期化をしてしまえば、使用方法をほぼ変わりませんので、これを機会にマスターしてしまいましょう。
次回予定
次回はnull許容型について説明をします。
Please follow and like us:
コメント