#include <iostream>
template <typename T>
class MultiArray
{
public:
explicit MultiArray(T* arr, int sizex, int sizey) : data(arr), sizey(sizey) {}
const T* operator [] (int x) const { return &data[x * sizey]; }
T* operator [] (int x) { return &data[x * sizey]; }
private:
T* data;
int sizey;
};
int main()
{
int arr[12] = {
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12,
};
MultiArray<int> m(arr, 3, 4);
for (int i = 0; i != 3; ++i) {
for (int j = 0; j != 4; ++j) {
std::cout << m[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIE11bHRpQXJyYXkKewpwdWJsaWM6CiAgICBleHBsaWNpdCBNdWx0aUFycmF5KFQqIGFyciwgaW50IHNpemV4LCBpbnQgc2l6ZXkpIDogZGF0YShhcnIpLCBzaXpleShzaXpleSkge30KCiAgICBjb25zdCBUKiBvcGVyYXRvciBbXSAoaW50IHgpIGNvbnN0IHsgcmV0dXJuICZkYXRhW3ggKiBzaXpleV07IH0KICAgIFQqIG9wZXJhdG9yIFtdIChpbnQgeCkgeyByZXR1cm4gJmRhdGFbeCAqIHNpemV5XTsgfQoKcHJpdmF0ZToKICAgIFQqIGRhdGE7CiAgICBpbnQgc2l6ZXk7Cn07CgppbnQgbWFpbigpCnsKICAgIGludCBhcnJbMTJdID0gewogICAgICAgIDEsIDIsIDMsIDQsCiAgICAgICAgNSwgNiwgNywgOCwKICAgICAgICA5LCAxMCwgMTEsIDEyLAogICAgfTsKCiAgICBNdWx0aUFycmF5PGludD4gbShhcnIsIDMsIDQpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpICE9IDM7ICsraSkgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqICE9IDQ7ICsraikgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgbVtpXVtqXSA8PCAiICI7CiAgICAgICAgfQogICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K