#include <iostream>
#include <cmath>
#include <ctime>
class Matrix {
int **ptr = nullptr;
int x = NULL, y = NULL;
public:
Matrix() = default;
Matrix(int i, int j) :x(i), y(j)
{
ptr = new int*[x];
for (int i = 0; i < x; i++)
ptr[i] = new int[y];
}
Matrix(int i) :Matrix(i, i) {}
Matrix(const Matrix &ob) : x(ob.x), y(ob.y)
{
//ўл¤Ґ«пҐ¬ Ї ¬пвм ¤«п Є®ЇЁЁ.
ptr = new int*[ob.x];
for (int i = 0; i < ob.x; i++)
ptr[i] = new int[ob.y];
//Є®ЇЁа㥬.
for (int i = 0; i < ob.x; i++)
for (int j = 0; j < ob.y; j++)
ptr[i][j] = ob.ptr[i][j];
}
Matrix& operator=(Matrix rhs);
~Matrix();
void fill();
void show();
};
Matrix& Matrix::operator=(Matrix rhs)
{
int tmp = x; x = rhs.x; rhs.x = tmp;
tmp = y; y = rhs.y; rhs.y = tmp;
int ** t = ptr; ptr = rhs.ptr; rhs.ptr = t;
return *this;
}
Matrix::~Matrix()
{
for (int i = 0; i < x; i++)
delete[] ptr[i];
delete[] ptr;
}
void Matrix::fill()
{
std::srand(std::time(NULL));
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++)
ptr[i][j] = rand() % 10;
}
}
void Matrix::show()
{
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
std::cout << ptr[i][j] << ' ';
} std::cout << std::endl;
} std::cout << std::endl;
}
int main()
{
Matrix A(2), B;
A.fill();
A.show();
B = A;
std::cout << std::endl;
B.show();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjdGltZT4KCmNsYXNzIE1hdHJpeCB7CiAgICBpbnQgKipwdHIgPSBudWxscHRyOwogICAgaW50IHggPSBOVUxMLCB5ID0gTlVMTDsKcHVibGljOgogICAgTWF0cml4KCkgPSBkZWZhdWx0OwogICAgTWF0cml4KGludCBpLCBpbnQgaikgOngoaSksIHkoaikKICAgIHsKICAgICAgICBwdHIgPSBuZXcgaW50Klt4XTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHg7IGkrKykKICAgICAgICAgICAgcHRyW2ldID0gbmV3IGludFt5XTsKICAgIH0KICAgIE1hdHJpeChpbnQgaSkgOk1hdHJpeChpLCBpKSB7fQogICAgTWF0cml4KGNvbnN0IE1hdHJpeCAmb2IpIDogeChvYi54KSwgeShvYi55KQogICAgewogICAgICAgIC8v0Z7Qu8Kk0pDCq9C/0pDCrCDQh8KgwqzQv9Cy0LwgwqTCq9C/INCEwq7Qh9CB0IEuCiAgICAgICAgcHRyID0gbmV3IGludCpbb2IueF07ICAgICAgICAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvYi54OyBpKyspCiAgICAgICAgICAgIHB0cltpXSA9IG5ldyBpbnRbb2IueV07CgogICAgICAgIC8v0ITCrtCH0IHQsNCz0pDCrC4KICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9iLng7IGkrKykKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBvYi55OyBqKyspCiAgICAgICAgICAgICAgICBwdHJbaV1bal0gPSBvYi5wdHJbaV1bal07CiAgICB9CiAgICBNYXRyaXgmIG9wZXJhdG9yPShNYXRyaXggcmhzKTsKICAgIH5NYXRyaXgoKTsKCiAgICB2b2lkIGZpbGwoKTsKICAgIHZvaWQgc2hvdygpOyAgICAKfTsKCk1hdHJpeCYgTWF0cml4OjpvcGVyYXRvcj0oTWF0cml4IHJocykKewogICAgaW50IHRtcCA9IHg7IHggPSByaHMueDsgcmhzLnggPSB0bXA7CiAgICB0bXAgPSB5OyB5ID0gcmhzLnk7IHJocy55ID0gdG1wOwogICAgaW50ICoqIHQgPSBwdHI7IHB0ciA9IHJocy5wdHI7IHJocy5wdHIgPSB0OwogICAgcmV0dXJuICp0aGlzOwp9CgpNYXRyaXg6On5NYXRyaXgoKQp7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHg7IGkrKykKICAgICAgICBkZWxldGVbXSBwdHJbaV07CiAgICBkZWxldGVbXSBwdHI7Cn0KCnZvaWQgTWF0cml4OjpmaWxsKCkKewogICAgc3RkOjpzcmFuZChzdGQ6OnRpbWUoTlVMTCkpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCB4OyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHk7IGorKykKICAgICAgICAgICAgcHRyW2ldW2pdID0gcmFuZCgpICUgMTA7CiAgICB9Cn0KCnZvaWQgTWF0cml4OjpzaG93KCkKewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCB4OyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHk7IGorKykgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgcHRyW2ldW2pdIDw8ICcgJzsKICAgICAgICB9IHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CiAgICB9IHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkKeyAgIAogICAgTWF0cml4IEEoMiksIEI7CgogICAgQS5maWxsKCk7CiAgICBBLnNob3coKTsKCiAgICBCID0gQTsKCiAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogICAgQi5zaG93KCk7CgogICAgcmV0dXJuIDA7Cn0=