Top.Mail.Ru
Ответы

Написать функцию C++ создающую n-мерный массив

Нужно написать функцию, которая на вход принимает массив размеров массива, например [2,5,3,4,10], создает такой массив (в данном примере массив будет пятимерным), а потом возвращает ссылку на него.

Дополнен

Реализовать нужно через динамический массив, а не через, например, vector

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Просветленный
123456789101112131415161718192021222324252627282930313233343536373839404142
 #include <iostream> 
 
// Функция для создания n-мерного массива 
template <typename T> 
T* createNDimensionalArray(const int* dimensions, int numDimensions) { 
    // Вычисляем общий размер массива 
    int totalSize = 1; 
    for (int i = 0; i < numDimensions; ++i) { 
        totalSize *= dimensions[i]; 
    } 
 
    // Создаем динамический массив с нужным размером 
    T* array = new T[totalSize]; 
 
    // Заполняем массив нулями (или другими значениями по умолчанию) 
 
    // Возвращаем указатель на созданный массив 
    return array; 
} 
 
int main() { 
    // Пример использования функции 
    int dimensions[] = {2, 5, 3, 4, 10}; 
    int numDimensions = sizeof(dimensions) / sizeof(dimensions[0]); 
    int* myArray = createNDimensionalArray<int>(dimensions, numDimensions); 
 
    // Выводим размеры массива 
    std::cout << "Размеры массива: "; 
    for (int i = 0; i < numDimensions; ++i) { 
        std::cout << dimensions[i] << " "; 
    } 
    std::cout << std::endl; 
 
    // Выводим адрес первого элемента массива 
    std::cout << "Адрес первого элемента: " << &myArray[0] << std::endl; 
 
    // Не забываем освободить память после использования массива 
    delete[] myArray; 
 
    return 0; 
}