![]() |
|
Модераторы: bsa |
![]()
|
|
| gosn1ck |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 18.4.2009 Репутация: 1 Всего: 1 |
суть задачи - в динамический массив загнать числа из файла и отсортировать
у меня 2 вопроса. 1) можно ли узнать размер массива иным способом, а не перебирать строки? 2) после чтения всего файла, как его прочитать еще раз, а не использовать повторно fgets(rbuf, sizeof(rbuf)-1, fin); ? |
|||
|
||||
| azesmcar |
|
||||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
нет, используй std::set и не мучай себя
не надо читать второй раз, просто читай в первый раз в set в принципе вот реализация того что тебе надо
но давай на твой код посмотрим
а удалять кто будет?
в данном случае лучше использовать ++size он чуть чуть быстрее (если не считать что оптимизатор возможно сделает это за тебя) Добавлено @ 10:52 gosn1ck если хочешь без использования stl, тогда придется писать то что делает к примеру вектор самому (а именно перераспределение памяти) Это сообщение отредактировал(а) azesmcar - 6.5.2009, 10:52 |
||||||||||
|
|||||||||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 2 Всего: 207 |
если бы все числа были одинаковой длины, тогда да
большая часть данных (если не все) уже будет буферизирована как вариант, использовать инкрементирующийся буфер на 4096, 8192, 16384, ... байта -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Не будет - файл открывается заново. Если числа разной длины, то выделяем сначала массив например на 1000 чисел. Заполнили эту 1000 - смортрим какую часть файла прочитали и например прочитали 40% - выделяем массив на 2500 чисел, копируем из старого в новый, старый удаляем. Если 2500 не хватит, аналогично выделяем снова. Это экономичнее, чем выделять 1024, затем 2048, 4196 и т.д. |
|||
|
||||
| gosn1ck |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 18.4.2009 Репутация: 1 Всего: 1 |
можно читать файл еще раз, без открытия и использования std ?
|
|||
|
||||
| Remiznik |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: 1 Всего: 1 |
а можно вопрос почему будет быстрее ? очень интересно !! |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: 1 Всего: 1 |
azesmcar, спасибо за ответ ! некогда не задумывался что в этих операторах есть отличие )
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |