#include <vector>
#include <string>
#include <iostream>
#include <iomanip>
#include <memory>
#include <typeinfo>
using namespace std;
auto vector_ptr(int size1, int size2, int size3) {
auto result = make_shared<vector<vector<vector<int>>>>(size1, vector<vector<int>>(size2, vector<int>(size3)));
return *result;
}
auto vector_ptr(int size1, int size2) {
auto result = make_shared<vector<vector<int>>>(size1, vector<int>(size2));
return *result;
}
auto vector_ptr(int size1) {
auto result = make_shared<vector<int>>(size1);
return *result;
}
// Вызов
int main(int argc, const char * argv[])
{
int size1 = 2, size2 = 3, size3 = 4;
auto varr1 = vector_ptr(size1);
cout << typeid(varr1).name() << endl;
auto varr2 = vector_ptr(size1, size2);
cout << typeid(varr2).name() << endl;
auto varr3 = vector_ptr(size1, size2, size3);
cout << typeid(varr3).name() << endl;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPHR5cGVpbmZvPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmF1dG8gdmVjdG9yX3B0cihpbnQgc2l6ZTEsIGludCBzaXplMiwgaW50IHNpemUzKSB7CmF1dG8gcmVzdWx0ID0gbWFrZV9zaGFyZWQ8dmVjdG9yPHZlY3Rvcjx2ZWN0b3I8aW50Pj4+PihzaXplMSwgdmVjdG9yPHZlY3RvcjxpbnQ+PihzaXplMiwgdmVjdG9yPGludD4oc2l6ZTMpKSk7CnJldHVybiAqcmVzdWx0Owp9CgphdXRvIHZlY3Rvcl9wdHIoaW50IHNpemUxLCBpbnQgc2l6ZTIpIHsKYXV0byByZXN1bHQgPSBtYWtlX3NoYXJlZDx2ZWN0b3I8dmVjdG9yPGludD4+PihzaXplMSwgdmVjdG9yPGludD4oc2l6ZTIpKTsKcmV0dXJuICpyZXN1bHQ7Cn0KCmF1dG8gdmVjdG9yX3B0cihpbnQgc2l6ZTEpIHsKYXV0byByZXN1bHQgPSBtYWtlX3NoYXJlZDx2ZWN0b3I8aW50Pj4oc2l6ZTEpOwpyZXR1cm4gKnJlc3VsdDsKfQoKLy8g0JLRi9C30L7QsgoKaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCnsKICAgIGludCBzaXplMSA9IDIsIHNpemUyID0gMywgc2l6ZTMgPSA0OwogICAgYXV0byB2YXJyMSA9IHZlY3Rvcl9wdHIoc2l6ZTEpOwogICAgY291dCA8PCB0eXBlaWQodmFycjEpLm5hbWUoKSA8PCBlbmRsOwogICAgYXV0byB2YXJyMiA9IHZlY3Rvcl9wdHIoc2l6ZTEsIHNpemUyKTsKICAgIGNvdXQgPDwgdHlwZWlkKHZhcnIyKS5uYW1lKCkgPDwgZW5kbDsKICAgIGF1dG8gdmFycjMgPSB2ZWN0b3JfcHRyKHNpemUxLCBzaXplMiwgc2l6ZTMpOwogICAgY291dCA8PCB0eXBlaWQodmFycjMpLm5hbWUoKSA8PCBlbmRsOwp9Cg==