#include <iostream>
#include <vector>
class Row //Proxy
{
public:
Row(std::size_t size=0)
:cols_(size){};
int& operator[](int index) { return cols_[index]; }
const int& operator[](int index) const { return cols_[index]; }
private:
std::vector<int> cols_; // или std::array<> или просто обычный массив.
};
class Matrix
{
public:
Matrix(std::size_t rowSize, std::size_t colSize)
:rows_(rowSize, Row(colSize) ){}
Row& operator[](int index) { return rows_[index]; }
const Row& operator[](int index)const { return rows_[index]; }
private:
std::size_t colSize_;
std::vector<Row> rows_;
};
int main()
{
Matrix m(3,4);
m[2][2]= 5;
std::cout<< m[2][2] << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKY2xhc3MgUm93IC8vUHJveHkKewogICAgcHVibGljOgogICAgICAgUm93KHN0ZDo6c2l6ZV90IHNpemU9MCkKICAgICAgICAgOmNvbHNfKHNpemUpe307CiAgICAgICAgIAogICAgICAgaW50JiBvcGVyYXRvcltdKGludCBpbmRleCkgeyByZXR1cm4gY29sc19baW5kZXhdOyB9IAogICAgICAgY29uc3QgaW50JiBvcGVyYXRvcltdKGludCBpbmRleCkgIGNvbnN0IHsgcmV0dXJuIGNvbHNfW2luZGV4XTsgfSAKICAgIHByaXZhdGU6CiAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+IGNvbHNfOyAvLyDQuNC70Lggc3RkOjphcnJheTw+INC40LvQuCDQv9GA0L7RgdGC0L4g0L7QsdGL0YfQvdGL0Lkg0LzQsNGB0YHQuNCyLgp9OwoKY2xhc3MgTWF0cml4CnsKCXB1YmxpYzoKICAgICAgTWF0cml4KHN0ZDo6c2l6ZV90IHJvd1NpemUsIHN0ZDo6c2l6ZV90IGNvbFNpemUpIAogICAgICAgIDpyb3dzXyhyb3dTaXplLCBSb3coY29sU2l6ZSkgKXt9CiAgICAgIAogICAgICBSb3cmIG9wZXJhdG9yW10oaW50IGluZGV4KSB7IHJldHVybiByb3dzX1tpbmRleF07IH0gCiAgICAgIGNvbnN0IFJvdyYgb3BlcmF0b3JbXShpbnQgaW5kZXgpY29uc3QgeyByZXR1cm4gcm93c19baW5kZXhdOyB9IAogICAgICAgIAogICAgcHJpdmF0ZToKICAgICAgc3RkOjpzaXplX3QgY29sU2l6ZV87CiAgICAgIHN0ZDo6dmVjdG9yPFJvdz4gcm93c187Cn07CgoKaW50IG1haW4oKSAKewogICAgTWF0cml4ICBtKDMsNCk7CiAgICAKICAgIG1bMl1bMl09IDU7CiAgICAKICAgIHN0ZDo6Y291dDw8IG1bMl1bMl0gPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9