Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.107.236] |
|
Сообщ.
#1
,
|
|
|
Я начинающий программист в С++. Но вот столкнулся с такой проблемой:
В Borland c++ 5.x есть класс vector, который собственно и представляет из себя динамический массив, но вот использовать я его не могу, т.к. в Borland C++ 3.11 его нет,а мне надо сдавать задачу на нём! Кто нибудь знает как реализовать динамический массив на Borland C++ 3.11, с использованием стандартных библиотек? |
Сообщ.
#2
,
|
|
|
Всё, приехали... а я то, балда, думал, что динамические массивы
создаются: 1) malloc, 2) new удаляются: 1) free, 2) delete перераспределяются: 1) realloc Кстати, ты уверен, что в BC++3.1 нет шаблона vector? По моему он всетаки есть, тока чуть-чуть в другой модификации... |
Сообщ.
#3
,
|
|||
|
Пример. Это уже в функции main, просто показывает как создать динамический массив с неизвестным количеством элементов.
|
Сообщ.
#4
,
|
|
|
Могe скинуть Борландовский класслиб на мыл, там есть массивы и прочее. зип файл около 300К. Если надо, мое мыло в профайле, пиши с темой "Класслиб Борланд 3.1"
PS. Мобыть я не прав, но 3.11 - это Винда такая была, а Борланд все же 3.1? |
Сообщ.
#5
,
|
|||||
|
Это пройдёт если я в последний момент всё же знаю сколько элементов будет в массиве, а мне надо считать из файла,не определённое зарание колличество чисел! Как это сделать? |
Сообщ.
#6
,
|
|||
|
Вышли, пожалуйста, на diehardmail@timus.ru. |
Сообщ.
#7
,
|
|
|
Послал.
|
Сообщ.
#8
,
|
|
|
Сообщ.
#9
,
|
|
|
ПисАть за тебя не буду, но могу подсказать алгоритм. Ващще чиста бесплюсовый! Голый Це и АПИ.
1)SizeArray=0L; 2)Portion=1024;// Здесь может быть почти любое положительное число которое тебе нравится. 3)Выделяешь первоначально память Array размером Portion. При помощи ф-ий HeapAlloc() или calloc(), malloc(). 4)Читаешь из файла по указателю Array в выделенную память блок в Portion байт. Для этого используй ф-ию ReadFile(). Если она вернула TRUE, а четвёртый параметр меньше Portion, то данных всего столько сколько прочли. Тогда: { SizeArray=[значение в четвёртом параметре ф-ии ReadFile()]; При помощи ф-ий HeapReAlloc() или realloc() обрубаешь массив Array под реальный его размер SizeArray. END. } Если она вернула TRUE и четвертый параметр == Portion, то всё считалось отлично и данные в файле есть ещё. { Далее цикл: SizeArray+=Portion; Добавим ещё памяти. При помощи ф-ий HeapReAlloc() или realloc(). Здесь размер выделяемой памяти (второй параметр в ф-ии realloc() ) задаётся переменной SizeArray. Выставь указатель на новый кусок памяти: NewPoint=Array+SizeArray-Portion; ReadFile(). Читаешь на указатель NewPoint порцию в Portion байтов. Если ReadFile() вернула TRUE и четвертый параметр == Portion, то всё считалось отлично и данные в файле есть ещё. Перейти в начало цикла. Иначе - данные кончились. Реальный размер массива будет равен SizeArray=SizeArray-Portion+[значение в четвёртом параметре]; При помощи ф-ий HeapReAlloc() или realloc() обрубаешь массив Array под реальный его размер SizeArray. END. } Ух, запарился писАть! |
Сообщ.
#10
,
|
|||||||
|
KAV немного опечатался, удалять динамический массив нужно так:
|
Сообщ.
#11
,
|
|||||||
|
KAV немного ошибся в написании кода. Удалять динамический массив нужно следующим образом:
|