Day2
本日は二次元配列について学びました。
これを使うとゲームの盤面、座標系などを扱うのに適しています。
行列計算もこれを使うのが適しているでしょう。
早速具体的な書き方を記すと、例で"teams"という2次元配列を定義すると
string[] members1 = {"satosi", "hitosi", "maki"};
string[] members2 = {"hitomi", "haruki", "masaki"};
string[][] teams = {members1,members2};
Console.WriteLine(teams[0][0]);
//これはsatosiが出力されます。
第一引数にはteamsのインデックス、第2引数には参照先の配列のインデックスが割り当てられています。つまりhitosiを出力したいのであれば、
teams[0][1]
とすればいいわけです。
newの使い方
int numberA = new int[5];
これは配列の長さが5ですべて要素が0の配列を作るという意味になります。このnew演算子を使用することで一気に配列を作成することができるのは便利だなぁと思いました。
つまり中身は次のようになります。
0 0 0 0 0
2次元配列の場合も同じノリで作成することが可能です。
ここで初めて知ったんですが、どうやら2次元配列は1種類だけじゃないようですね。ジャグ配列というものと長方形配列というものがあります。
ジャグ配列??なんやねんそれみたいな感じだったので調べると各要素の中の配列の長さが異なってもOKな配列のことです。また、長方形配列は各要素の配列の長さが一定な2次元配列のことです。
言葉で説明するだけでは難しいので手書きイラストを用いると、
こういうイメージで定義の仕方が異なります。
ジャグ配列
int[][] numberB = new int[5][];
for (int i = 0; k < numberB.Length; i++){
numberB[k] = new int[5];
}
各要素の配列の長さが異なるのでまず主成分の長さを指定してから各要素の配列を作成しています。より柔軟なデータを扱うことができます。
長方形配列
//5行5列の長方形配列の初期化
int[,] numberB = new int[5, 5];
これで作成することができます。めっちゃすっきりしてますね。
構文として、int[,] 配列名 = new int[行, 列]とすることで作成することができます。
演習課題で2行3列の配列を出力せよという問題で長方形配列使ったら楽になるのではと思い、試してみると、配列の参照の仕方が難しかったのでまた後日書こうと思います。ここではジャグ配列を使用していきます。ジャグ配列は参照したときに1次元の配列と同じように扱え、使用しやすいというメリットがあるのではないかと思いました。
毎日更新していきたいと思ってはいるのですが、忙しさでなかなか時間を割くことができず悲しい....