Ответы:
Очевидно никак. У вас же нет неограниченной памяти?
Скорее никак ведь: массив - последовательность ячеек (ячеек размером с элемент массива) памяти.
Операционная система выделяет память динамически из разных мест поэтому постоянно увеличивать массив не удасться.
Вы лучше расскажите для каких целей вам это необходимо, тогда и отвечать будет проще
ядерщик, ты не прав, один из вариантов юзать сишную realloc, второй вариант - реализовать класс итератор и контейнер, где каждый новый элемент будет динамически создаваться и содержать указатель на последующий (что верятно и сделано в STL)
>> один из вариантов юзать сишную realloc
Реаллок очень накладный по производительности, а когда идет речь о "неопределенных" размерах, то еще и опасен тем, что в какой-то момент может не найтись достаточно длинного куска памяти.
>> реализовать класс итератор и контейнер, где каждый новый элемент будет динамически создаваться и содержать указатель на последующий
Это STL list, идея хорошая, но для примитивных типов дает большой оверхед по памяти. Если человеку нужно именно подобие массива, то лучше использовать vector. Накрайняк, если самому писать, то выделять достаточно длинный кусок памяти, а когда он заканчивается, выделять еще один и провязывать их в список. Длины кусков можно увеличивать в 2 раза, пока система дает.
Уважаемый, вам нужно либо использовать "динамические массивы" либо контейнеры STL.
Как писали коллеги - это оператором new делается. а вначале создается указатель.
Короче в C#/C/C++ такие вещи делаются через задницу, извините за прямоту. Поэтому при программировании в этих языках всегда стремятся обходить такие алгоритмы, которые требуют инкрементного увеличения памяти, либо придумывают сотнитыщ способов как это сделать оптимальнее.
все мудаки, кроме Keres
+1, std::vector
14 лет назад