一次元配列を二次元配列っぽく扱う
一次元配列としてnewで確保した配列を二次元配列っぽく扱う。
#include <iostream> using std::cout; using std::endl; const int ARRAY_X = 10; const int ARRAY_Y = 5; int main () { int* array = new int[ARRAY_X * ARRAY_Y]; for(int y=0;y<ARRAY_Y;++y) { for(int x=0;x<ARRAY_X;++x) { v = (y+1)*(x+1); } } for(int y=0;y<ARRAY_Y;++y) { for(int x=0;x<ARRAY_X;++x) { cout << array[y*ARRAY_X + x] << ' '; } cout << "\n"; } cout << endl; delete[] array; return 0; }
$ main 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50
ポイントは「array[y*ARRAY_X + x]」
確保する大きさが分からないデータを2次元配列で扱うときに便利ですね。