配列の確保は
array<型>^変数名 = gcnew array<型>(要素数);
のように行います。
多次元の場合は
array<型, 次数>^変数名 = gcnew array<型, 次数>(0次の要素数, 1次の要素数, 2次の要素数・・・);
コード例は以下の通り
/////////////////////////////////////////////// // 配列の初期化 /////////////////////////////////////////////// array<int>^a = gcnew array<int> {0, 1, 2, 3, 4}; // a[0] = 0 // a[1] = 1 // a[2] = 2 // a[3] = 3 // a[4] = 4 /////////////////////////////////////////////// // 配列の確保 /////////////////////////////////////////////// array<int>^b = gcnew array<int>(6); int Len = b->Length; // 配列の全個数 for (int i = 0; i < Len; i++) { b[i] = i * 2; } // b[0] = 0 // b[1] = 2 // b[2] = 4 // b[3] = 6 // b[4] = 8 // b[5] = 10 /////////////////////////////////////////////// // 二次元配列の確保 /////////////////////////////////////////////// array<int, 2>^c = gcnew array<int, 2>(2, 3); int iLen = c->GetLength(1); // 1次の配列の個数 (= 3) int jLen = c->GetLength(0); // 0次の配列の個数 (= 2) for (int j = 0; j < jLen; j++) { for (int i = 0; i < iLen; i++) { c[j, i] = j * 10 + i; } } //c[0, 0] = 0 c[0, 1] = 1 c[0, 2] = 2 //c[1, 0] = 10 c[1, 1] = 11 c[1, 2] = 12 /////////////////////////////////////////////// // ポインタで二次元配列を参照し一次元配列へ代入 /////////////////////////////////////////////// pin_ptr<int>p = &c[0, 0]; array<int>^d = gcnew array<int>(6); for (int i = 0; i < iLen * jLen; i++){ d[i] = p[i]; } // d[0] = 0 // d[1] = 1 // d[2] = 2 // d[3] = 10 // d[4] = 11 // d[5] = 12
ここで、多次元配列の場合、メモリに格納されている順番は右側の添え字から順番に格納されているので、ご注意下さい。
ポインタで参照している部分を参考にして下さい。
良く使うメソッド、プロパティは以下の通り
メソッド
- GetLength(dimension)
指定した次元(dimension)の要素数を取得します。- Resize(array, newSize)
配列(array)のサイズをnewSizeに変更し、各要素は新しい配列へコピーされます。
プロパティ
- Length
全ての次元内の要素数を取得します。
コメント
[…] 4/25 【C++/CLI】配列の確保(Arrayクラス) […]