| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| Вопрос был именно "массив", а не связанный список, где елементы раскиданы по памяти в произвольном порядке. |