ArrayResize для второго измерения

 
Хай, all!

  Как изменять размер одномерного массива понятно. Пример, даже в документации есть.
А теперь вопрос - какой синтаксис для изменения размера второго измерения?

  И еще вопрос - зачем, собственно говоря, при объявлении массива при запуске,  под него сразу выделяется память? Если объявил огромный массив,  я получаю сразу, к примеру, мегабайт 300 выделенной памяти.  
Механизм выделения (физической) памяти по запросу в ОС присутствует и выделяет определенный кусок (не весь объявленный размер) при первом обращении.
 
Вы имеете ввиду выделение памяти только для тех элементов массива к которым было обращение, даже несмотря на то что размер массива объявлен?
 
Integer

Именно это я имею ввиду.
 
Быстродействие же снизится, и наверно значительно. С чем может быть связана такая потребность? Экономия оперативной памяти? Но если массив объявлется, это подразумевает что потребуются все элементы массива. Если же заведомо известно, что все элементы массива не потребуются, нужно применять соответствующий алгоритм.
 
MageSlayer:
Integer

Именно это я имею ввиду.


Жаль, я думал идет речь о динамическом выделении памяти.

Жаль, а так хотелось.

 
Вычисляйте индекс явно. Тогда можно создавать массивы любой размерности, хранить их как одномерные и выделять под них ровно столько памяти, сколько им требуется.
 
alexjou:
Вычисляйте индекс явно. Тогда можно создавать массивы любой размерности, хранить их как одномерные и выделять под них ровно столько памяти, сколько им требуется.

Так и приходится делать.
 
Integer

Быстродействие же снизится, и наверно значительно.

Нет, конечно. Все наоборот. Говорю за ОС Windows, фактическим выделением памяти занимается сама ОС и при необходимости. Поэтому не надо ждать при запуске эксперта пока выделиться и инициализируется (!!!) огромный кусок памяти.

Если же заведомо известно, что все элементы массива не потребуются, нужно применять соответствующий алгоритм.


Ага, я ж не зря спросил про динамическое изменение второго измерения. Если бы была такая возможность, то я бы не выделял такие массивы.

Вычисляйте индекс явно. Тогда можно создавать массивы любой размерности, хранить их как одномерные и выделять под них ровно столько памяти, сколько им требуется.


Предложение конечно логичное, но при отсутствии в языке даже намека на объектность (объектно-ориентированность),  где прикажете хранить служебные переменные для каждого такого массива? В самом массиве? И писать для работы с массивами разных типов N-одинаковых функций (указателей похоже тоже нет) ?

В общем склоняюсь к организации массивов или еще лучше таблиц ala реляционных через dll. Кстати, поддержка в встроенном языке таблиц предвидится?
 
<Предложение конечно логичное, но при отсутствии в языке даже намека на объектность (объектно-ориентированность), где прикажете хранить служебные переменные для каждого такого массива? В самом массиве? И писать для работы с массивами разных типов N-одинаковых функций (указателей похоже тоже нет) ?>

Так бы сказал -- мелкомягкие приучили к откровенному свинству. А ручками не слабО организовать? Мозжечком там пожужжать мало-мало?
 
alexjou

Мелкомягкие говоришь? Что-то с не вижу, чтоб в никсах от c++ кто-то отказывался.  Наоборот развивают и наворачивают (например, язык D, слыхал о таком?). Ручками не слабо, на флейм не хватает.
 
"Поколение пепси", мля...
Причина обращения: