![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Sep. |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 22.7.2004 Репутация: нет Всего: 6 |
Если во время заполнения динамического массива не известно какова будет его длинна, как поступить?
New() выделяет место, и потом к этому месту уже не добавить, как я понял? И как уменьшить массив, например вернуть его вторую половину в кучу? Спасибо. --------------------
Syn - TotalCommander lister plugin | SynTree - coders sourcebook |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
переаллокацией и освобождением памяти. Дельфи делает тоже самое, только вскрытую от юзера.
Вот этот код например увеличит длинну массива и скоирует в новый старый. Но для этого есть STL конечною
|
|||
|
||||
| Fire-Plug |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2005 Репутация: -1 Всего: 0 |
Если пользовать не new, а ф-цию CRTL calloc (или malloc), то затем изменить размер выделенного ранее блока памяти можно с помощью CRTL-ф-ции realloc:
Содержимое блока памяти остается тем же. Если размер блока уменьшается, т.е. NewSize < OldSize, то остаются естесс-но, первые NewSize байт. Можно предложить для твоей ситуации более современный подход. Известно ли тебе что-либо об STL, в частности, о таком контейнере в STL как vector? vector - как раз реализует динамический массив, к-рый позволяет добавлять к нему новые эл-ты по мере их получения. Если не известно, то вот примитивный пример - вектор целых чисел:
Добавлено @ 07:26 По поводу realloc: думается, что в качестве void *memblock прокатит также указатель на блок памяти, к-рый вернет оператор new, т.к. реализация new - обертка вокруг malloc. --------------------
Объясни другому - поймешь сам (Народная примета) |
||||||
|
|||||||
| Sep. |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 109 Регистрация: 22.7.2004 Репутация: нет Всего: 6 |
Да vector = сила!
Можно даже стирать отдельные элементы за одно действие. Спасибо за инфу. --------------------
Syn - TotalCommander lister plugin | SynTree - coders sourcebook |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |