一次元配列を二次元配列っぽく扱う

一次元配列として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次元配列で扱うときに便利ですね。