Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Динамическое добавление элементов в массив


Автор: gray_k 21.8.2003, 13:30
Можно ли сделать массив, чтобы в него можно было добавлять элементы.

Автор: Step 21.8.2003, 14:01
Можно не делать, а воспользоваться шаблоном вектор, или списками....

Автор: mr.DUDA 21.8.2003, 14:38
А можно сделать динамический массив. Только это невыгодно, т.к. при каждом добавлении элемента (читай -- росте массива) придётся выделять блок памяти под массив увеличенного размера, копировать в него все элементы из массива, уничтожать блок памяти под массив предыдущего размера; представляешь, какие затраты времени на это уйдут ?

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

Самым "продвинутым" из них считается STL (хотя есть аналогичные средства, входящие в состав классов OWL для C++ Builder и MFC для Visual C++). В частности, динамический массив с возможностью вставки/удаления элементов, реализуется с помощью шаблона "vector".

Автор: kruchinin 21.8.2003, 17:28
можно сделать структуру, например
struct object
{
BYTE obj;
void *p;
};

здесь obj-элемент массива а
p - указатель на следующий элемент
при добавлении нового элеменат выделяешь память а ссылку на нее даешь на последний в списке объект и т.д.

Автор: mr.DUDA 21.8.2003, 17:36
kruchinin, и получаем... самодельный односвязный список.
Спрашивается: зачем это, если есть контейнер "list" ?

Автор: kruchinin 21.8.2003, 17:46
Не все пользуются такими средствами как контейнер list - тем более все такие средства значительно сказываются на быстродействии, т.к. поддерживают значительные возможности, а при таком простом использовании можно получить значительный выгрыш в скорости.

Автор: DENNN 21.8.2003, 18:14
Вопрос был именно "массив", а не связанный список, где елементы раскиданы по памяти в произвольном порядке.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)