В C++ я чувствую себя очень неудобно, что C++ не имеет встроенной функции для динамического выделения памяти для многомерных массивов во время выполнения.Почему у C++ нет удобного способа динамического выделения памяти для многомерного массива?
В Java мы можем просто сделать одну строку кода. Например, в Java, мы можем динамически выделять память для 4D целочисленного массива с
int a, b, c, d;
std::cin>>a>>b>>c>>d;
int[ ][ ][ ][ ] array = new int[a][b][c][d];
Я гугле решения, чтобы сделать то же самое в C++. Но я обнаружил, что в C++ мы должны использовать вложенные циклы, контейнеры или некоторые структуры с функциями для достижения того же. Поскольку такая функция синтаксиса будет очень удобной, я хочу спросить, почему C++ не включил такую встроенную функцию?
Интересный забавный факт: этот массив 4D в Java? Это не 4D-массив. Это массив массивов массивов массивов целых чисел.Это может быть болезненно медленным, потому что между каждым динамически выделенным вспомогательным массивом нет связи. CPU отскакивает от одного распределения к другому и никогда не справляется с тем, чтобы получить скорость, которую он может получить из непрерывных данных, все предварительно загруженные в кеш. Ужасное вложенное решение C++ цикла делает то же самое, и это ужасно. Если вам не нужны зубчатые массивы, не делайте этого ни на одном из языков. Создайте оболочку вокруг массива 1D, который обрабатывает индексирование для вас. – user4581301
Вот пример: https://isocpp.org/wiki/faq/operator-overloading#matrix-subscript-op – user4581301