Как выделить смежный многомерный массив в GNU C ++? Существует расширение GNU, которое позволяет использовать «стандартный» синтаксис.
Кажется, проблема исходит от оператора new []. Убедитесь, что вместо этого вы используете новый оператор:
double (* in)[n][n] = new (double[m][n][n]); // GNU extension
И это все: вы получаете C-совместимый многомерный массив ...
Теоретически языки со статической типизацией могут иметь преимущества динамических языков, и теоретически также возможно, что динамические языки отстой и вызовут больше головной боли, чем удовольствия.
Однако на практике , динамические языки позволяют писать код быстро, без излишних шаблонов, не беспокоясь о деталях низкого уровня.
Да, теоретически язык c-стиля может предоставлять аналогичные функции (D пытается, с auto
type discovery и dmdr
, который компилирует модули и запускает их на лету, как если бы они были скриптами),
Так что да, скептики правы, в том, что быть динамичным не обязательно ] означает более простой / чистый код.
но , на практике, Python> Java
Попробуйте w = "моя строка здесь".split () [1]
на C или даже на Java.
Для меня это вопрос ситуации. Я трачу много времени на написание кода Perl для веб-сайтов и C ++ для графических движков. Две совершенно разные области программирования с двумя очень разными языками.
Динамические языки, в любом случае, для меня работать быстрее, поскольку я трачу меньше времени на то, чтобы убедиться, что структура на месте, и больше на реальную проблему.
Однако статические языки предлагают более точный контроль, который может быть необходим в некоторых приложениях, таких как рендеринг графики в реальном времени. Я могу делать на C ++ вещи, которые работают намного эффективнее и быстрее, чем то, что я написал бы для Perl, но для размера большинства скриптов Perl потеря эффективности незначительна.
В конце концов, все сводится к формулировке проблемы. и каковы ваши целевые цели. Если у вас есть много простых дел, когда скорость и эффективность памяти не имеют большого значения, используйте динамический язык. Если у вас есть мегалитический проект, который должен выжать каждый последний цикл из вашей системы, переходите в статический режим.