#include <iostream>
#include <vector>
class MyMatrix
{
public:
MyMatrix(int m, int n) :
m_matrix(m, std::vector<int>(n))
{
}
// Other methods
const std::vector<int>& operator[] (int m) const { return m_matrix.at(m); }
std::vector<int>& operator[] (int m) { return m_matrix.at(m); }
int operator () (int m, int n) const { return m_matrix.at(m).at(n); }
int& operator () (int m, int n) { return m_matrix.at(m).at(n); }
private:
std::vector<std::vector<int>> m_matrix;
};
int main()
{
MyMatrix m(4, 2);
for (int i = 0; i != 4; ++i) {
for (int j = 0; j != 2; ++j) {
m[i][j] = 10 * i + j;
}
}
for (int i = 0; i != 4; ++i) {
for (int j = 0; j != 2; ++j) {
std::cout << m(i, j) << " ";
}
std::cout << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKY2xhc3MgTXlNYXRyaXgKewpwdWJsaWM6CiAgICBNeU1hdHJpeChpbnQgbSwgaW50IG4pIDoKICAgICAgICBtX21hdHJpeChtLCBzdGQ6OnZlY3RvcjxpbnQ+KG4pKQogICAgewogICAgfQogICAgLy8gT3RoZXIgbWV0aG9kcwoKICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIG9wZXJhdG9yW10gKGludCBtKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5hdChtKTsgfQogICAgc3RkOjp2ZWN0b3I8aW50PiYgb3BlcmF0b3JbXSAoaW50IG0pIHsgcmV0dXJuIG1fbWF0cml4LmF0KG0pOyB9CgogICAgaW50IG9wZXJhdG9yICgpIChpbnQgbSwgaW50IG4pIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4LmF0KG0pLmF0KG4pOyB9CiAgICBpbnQmIG9wZXJhdG9yICgpIChpbnQgbSwgaW50IG4pIHsgcmV0dXJuIG1fbWF0cml4LmF0KG0pLmF0KG4pOyB9Cgpwcml2YXRlOgogICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8aW50Pj4gbV9tYXRyaXg7Cn07CgoKaW50IG1haW4oKQp7CiAgICBNeU1hdHJpeCBtKDQsIDIpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpICE9IDQ7ICsraSkgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqICE9IDI7ICsraikgewogICAgICAgICAgICBtW2ldW2pdID0gMTAgKiBpICsgajsKICAgICAgICB9CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gNDsgKytpKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogIT0gMjsgKytqKSB7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBtKGksIGopIDw8ICIgIjsKICAgICAgICB9CiAgICAgICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKICAgIH0KfQo=