Как сделать функцию удобной?

107
28 декабря 2021, 09:20

Есть такой код:

auto Karrr =make_shared<vector<vector<vector<int>>>>(size1, vector<vector<int>>(size2, vector<int>(size3)));

Он создает многомерный массив.

Вот так вызвать:

(*Karrr)[1][1][1];

Я бы хотел сделать его создание как-то удобней.

Например так:

auto arr2 = make_shared2(size,size2,size3);

Ещё изменить (*Karrr), на просто Karrr, если это возможно.

Answer 1

Ну, если хотите - то можно написать свою функцию. Например,

shared_ptr<vector<vector<vector<int>>>> make_shared2(size_t s1, size_t s2, size_t s3)
{
    return make_shared<vector<vector<vector<int>>>>(s1, 
                       vector<vector<int>>(s2, vector<int>(s3)));
}

после чего вызывать ее именно так, как написали:

auto arr2 = make_shared2(size,size2,size3);

Чтобы не тягать за собой *, можно воспользоваться, например, ссылкой:

vector<vector<vector<int>>>& arr = *arr2;

и работать как с обычным массивом

arr[i][j][k];

"По-моему, так" (с) Пух"

READ ALSO
C++, инициализация атомарных объектов

C++, инициализация атомарных объектов

У меня есть вопрос, касающийся инициализации атомарных объектов

189
C++, деструктор std::future

C++, деструктор std::future

Рассмотрим следующий код:

159
C++, std::async() и не статические методы

C++, std::async() и не статические методы

Рассмотрим следующий код:

219
При повторном переборе массива всегда возвращается последнее значение

При повторном переборе массива всегда возвращается последнее значение

Вроде простейшая задача, но какая-то фигняСам код:

216