Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли обрезать размер массива 
:(
    Опции темы
gray_k
Дата 24.11.2003, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1015
Регистрация: 9.1.2003
Где: Москва

Репутация: нет
Всего: 22



Такой вопрос.
Предположим мне надо заполнить массив, точное количество элементов которого я не знаю, но знаю максимально возможное.
Массив заполняется из другого массива по определённому условию.
я делаю так:
Код

int *Id = new int[MAX_SIZE];
int MySize = 0;
for(int i=0; i<MAX_SIZE; i++)
{
 if(INITIAL_ARRAY[i] > 0)
 {
   Id[MySize++] = INITIAL_ARRAY[i];
 }
}

После выполнения этого кода мы имеем массив Id, заполненный до (MySize-1)-го элемента.
Можно ли теперь не создавая новый массив, и не проходя в цикле по всем значениям Id, назначить массиву размер MySize вместо MAX_SIZE.


--------------------
С уважением.
Gray.
PM MAIL   Вверх
val
Дата 24.11.2003, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: нет
Всего: 7



Мне кажется, что нет.


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
Paradox
Дата 24.11.2003, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



К соответствующему топику могу добавить что SetLength


--------------------
---
PM MAIL WWW   Вверх
gray_k
Дата 24.11.2003, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1015
Регистрация: 9.1.2003
Где: Москва

Репутация: нет
Всего: 22



Нет. SetLength определён только для массивов-строк AnsiString и WideString


--------------------
С уважением.
Gray.
PM MAIL   Вверх
Paradox
Дата 24.11.2003, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



Ну а чтонибудь похожее ведь должно быть для динамических массивов (я тебе советую по аналогии с Дельфи и билдером)


--------------------
---
PM MAIL WWW   Вверх
Ars
Дата 24.11.2003, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

Репутация: 2
Всего: 2



Посмотри про CoTaskMemRealloc()


--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
gray_k
Дата 24.11.2003, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1015
Регистрация: 9.1.2003
Где: Москва

Репутация: нет
Всего: 22



Цитата
Посмотри про CoTaskMemRealloc()

Посмотрел. Только у меня он в программе не компилится. Не подскажешь какой хидер надо подключить.
У меня С++ Билдер 6.


--------------------
С уважением.
Gray.
PM MAIL   Вверх
Ars
Дата 24.11.2003, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

Репутация: 2
Всего: 2



Цитата
Header: Declared in objbase.h.
Library: Use ole32.lib.



--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
bel_nikita
Дата 24.11.2003, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Цитата
Можно ли теперь не создавая новый массив, и не проходя в цикле по всем значениям Id, назначить массиву размер MySize вместо MAX_SIZE.

А так не пробывал.
for (int i=MySize;i<MAX_SIZE;i++)
delete Id[i];



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Albinos
Дата 24.11.2003, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 11.10.2003

Репутация: нет
Всего: 3



Цитата
А так не пробывал.
for (int i=MySize;i<MAX_SIZE;i++)
delete Id[i];


Такая фишка не прокатит. И наверняка вызовет ошибку: delete будет считать, что в Id[i] содержится адрес переменной, под которую динамически выделялась память. В итоге начнет удалять не то.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.