Дмитро Цимбалюк
мне нету какой-то реальной нужды его тут использовать
Стоит минимизировать количество голых указателей, вообще, в целом
Поэтому для статичных массивов лучше использовать или обычную сишную запись (👎), или более удобный/современный std::array
, да, мы всё-таки на C++ пишем
Для динамических массивов вектор на порядок удобнее
Главное преимущество обоих: они оба знают свои размеры без костылей, а вектор может его менять
И самое главное: вектор безопаснее голых указателей
Да, мы можешь херануть себе фаллосом по лбу:
std::vector<int> vec = ...
int &a = vec[0];
vec.push_back(...
(ссылка может стать предателем)
Однако, теперь ты так не сделаешь)
Теперь к Саперу
Во-первых, там куча new, но ни одного delete
Если есть new, всегда должен быть delete!
Он может быть скрытый, как в иерархии виджетов Qt, где ставишь новому виджету родителя (parent), и родитель потом своевременно мочит своё дитя, эдакий аналог gc
Но всё равно он должен быть
Во-вторых, там известен размер массивов, он строго определенный, нет смысла вообще использовать динамический массив и new в частности
Для двумерного массива можно было сделать класс
И держать его в векторе или массиве
Условно std::vector<Image> images
Ну или в духе int images[3][2][2] = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } }, { { 1, 2 }, { 3, 4 } } };
Всяко лучше того динамического хелла)