#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
class matrix_mv
{
public:
matrix_mv()
{
cout << "Тяжёлое создание matrix_mv." << endl;
data = new double[1000 * 1000];
}
matrix_mv(const matrix_mv& other)
{
cout << "Тяжёлое копирование matrix_mv." << endl;
data = new double[1000 * 1000];
memcpy(data, other.data, 1000 * 1000 * sizeof(double));
}
matrix_mv(matrix_mv&& other)
{
cout << "Лёгкое перемещение matrix_mv." << endl;
data = other.data;
other.data = nullptr;
}
~matrix_mv()
{
if (data)
cout << "Тяжёлое уничтожение matrix_mv с данными." << endl;
else
cout << "Лёгкое уничтожение опустошённой matrix_mv." << endl;
delete[] data;
}
private:
double* data;
};
int main()
{
vector<matrix_mv> v;
v.push_back(matrix_mv());
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y3N0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIG1hdHJpeF9tdgp7CnB1YmxpYzoKCW1hdHJpeF9tdigpCgl7CgkJY291dCA8PCAi0KLRj9C20ZHQu9C+0LUg0YHQvtC30LTQsNC90LjQtSBtYXRyaXhfbXYuIiA8PCBlbmRsOwoJCWRhdGEgPSBuZXcgZG91YmxlWzEwMDAgKiAxMDAwXTsKCX0KCgltYXRyaXhfbXYoY29uc3QgbWF0cml4X212JiBvdGhlcikKCXsKCQljb3V0IDw8ICLQotGP0LbRkdC70L7QtSDQutC+0L/QuNGA0L7QstCw0L3QuNC1IG1hdHJpeF9tdi4iIDw8IGVuZGw7CgkJZGF0YSA9IG5ldyBkb3VibGVbMTAwMCAqIDEwMDBdOwoJCW1lbWNweShkYXRhLCBvdGhlci5kYXRhLCAxMDAwICogMTAwMCAqIHNpemVvZihkb3VibGUpKTsKCX0KCgltYXRyaXhfbXYobWF0cml4X212JiYgb3RoZXIpCgl7CgkJY291dCA8PCAi0JvRkdCz0LrQvtC1INC/0LXRgNC10LzQtdGJ0LXQvdC40LUgbWF0cml4X212LiIgPDwgZW5kbDsKCQlkYXRhID0gb3RoZXIuZGF0YTsKCQlvdGhlci5kYXRhID0gbnVsbHB0cjsKCX0KCgl+bWF0cml4X212KCkKCXsKCQlpZiAoZGF0YSkKCQkJY291dCA8PCAi0KLRj9C20ZHQu9C+0LUg0YPQvdC40YfRgtC+0LbQtdC90LjQtSBtYXRyaXhfbXYg0YEg0LTQsNC90L3Ri9C80LguIiA8PCBlbmRsOwoJCWVsc2UKCQkJY291dCA8PCAi0JvRkdCz0LrQvtC1INGD0L3QuNGH0YLQvtC20LXQvdC40LUg0L7Qv9GD0YHRgtC+0YjRkdC90L3QvtC5IG1hdHJpeF9tdi4iIDw8IGVuZGw7CgkJZGVsZXRlW10gZGF0YTsKCX0KCnByaXZhdGU6Cglkb3VibGUqIGRhdGE7Cn07CgppbnQgbWFpbigpCnsKCXZlY3RvcjxtYXRyaXhfbXY+IHY7Cgl2LnB1c2hfYmFjayhtYXRyaXhfbXYoKSk7CglyZXR1cm4gMDsKfQ==