Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
1

Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ?

17.07.2012, 12:25. Просмотров 1081. Ответов 11
Метки нет (Все метки)

сабж выше
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2012, 12:25
Ответы с готовыми решениями:

Уместить как можно больше блоков
Знаем ширину блока, в этот блок необходимо разместить как можно больше дочерних блоков. Ширина...

Запрос данных из БД. Один большой запрос или много маленьких?
Есть основная форма, на которой расположен TreeView, содержащий щас 30 ветвей. По щелчке на ветке...

1 большой сайт или много маленьких
Хочу сделать один большой сайт или множество маленких. для заработка на продаже ссылок и...

1 большой запрос или много маленьких в цыкле
Всем привет вопрос возможно дилетантский, но все же: Что лучше 1 запрос, с указанием длинного...

11
538 / 443 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
17.07.2012, 12:31 2
Можно попробовать бинарный файл.
0
4194 / 1787 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
17.07.2012, 12:39 3
Всякий список хранит данные и указатели на них, под указатели расходуется память, и как минимум один указатель должен быть при каждом элементе + ещё 1 на весь список. У тебя элементами будут массивы. Значит месте для данных останется меньше и тем меньше, чем меньше сами массивы.
0
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
17.07.2012, 12:52  [ТС] 4
Не совсем понял про бинарный файл ,не сталкивался с таким его использованием ,можно подробней ?
***
Если я правильно понимаю ,размер динамического массива ,например , short int ,буде 4 байта для указателя + 2 байта за каждый участок памяти с числом ,верно ?Нужно делать массивы с целевыми данными такой длины ,чтобы на х байт памяти под целевые данные приходилось приемлемое число байт вспомогательной информации .Но мне ,похоже , способ со списком не подходит.

***
Еще про бинарник ,т е я смогу работать с файлом произвольного размера ,ограниченного лишь ресурсами машины ?
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
17.07.2012, 12:56 5
zek921, расскажи подробнее, что именно ты пытаешься сделать и что не получается. А то непонятно пока, что означает "больше данных" и почему текущее решение (наверняка ты как-то организовал данные, так ведь?) не устраивает?
0
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
17.07.2012, 12:58  [ТС] 6
для общего развития хочу написать длинную арифметику .С ООООООЧЕНЬ большими числами .
Пока не начинал и только думаю как лучше сделать .
0
Модератор
Эксперт Python
26652 / 13899 / 2643
Регистрация: 12.02.2012
Сообщений: 22,782
Записей в блоге: 1
17.07.2012, 13:37 7
Для длинной арифметики рекомендую использовать динамически создаваемые массивы.
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
17.07.2012, 13:45 8
Цитата Сообщение от zek921 Посмотреть сообщение
для общего развития хочу написать длинную арифметику .С ООООООЧЕНЬ большими числами .
А, ну вот теперь понятно. Согласен с Catstail - нужно использовать динамические массивы, применительно к C++ это vector. Ну, а дальше - обычная поразрядная обработка, как в школе - "в столбик". Сложение/вычитание и сдвиги реализуются влет, умножение/деление немного посложнее.
0
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
17.07.2012, 14:31  [ТС] 9
массив попробовал .При unsigned long размер массива не будет больше миллиарда .Система счисления миллиард ,макс число большое будет ,но хочу еще больше

Добавлено через 19 минут
и возвращаясь к исходному вопросу ,потеряю ли я в длине числа используя список массивов ?
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
17.07.2012, 14:32 10
Ну, дык, в чем проблема?

Решение: представляешь свое число как "виртуальный массив" битов. Весь этот массив хранишь на диске в виде файла, а в память в каждый конкретный момент времени подгружаешь только ту часть этого файла (небольшую), с которой непосредственно сейчас идет работа. Поразрядно, скажем, разряды с 1000001 по 2000000. Ну и выгружаешь обратно на диск, когда она не нужна. Конечно, будет постоянный своп память-диск, что не лучшим образом скажется на быстродействии, но это - неизбежная плата за то, что размер твоего "числа" будет ограничен только размером доступной дисковой памяти.

Следующий шаг - хранить "число" где-нибудь в Инете на дисковом сервере. А возможно, и не на одном :-) Там размер числа лехко можно сделать в терабайты, петабайты.... и так далее, на сколько фантазии хватит.

Не по теме:

Правда, пока неясно, сколько лет придется ждать выполнения операции сложения таких супер-пупер-чисел. Может статься, что за эти годы и компьютер успеет помереть..... :-)



Придумай хоть какую-нибудь прикладную задачу, для которой могут понадобиться такие суперогромные числа...
0
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
17.07.2012, 14:41  [ТС] 11
такие суперогромные числа только для собственного удовольствия и повышения чсв .Где можно почитать про своп ?

Добавлено через 3 минуты
next stage
разделить число на меньшие и отдать их на растерзание сети компьютеров .Но это уже совсем изврат .
0
Эксперт С++
2919 / 1268 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
17.07.2012, 14:42 12
О "длине числа": да, потеряешь. Накладные расходы на организацию списка массивов составят аж катастрофическую величину - где-то на уровне 0.00001% от длины числа.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.07.2012, 14:42

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Один большой класс или много маленьких?
Здравствуйте. В программе есть N функций, которые необходимо выполнять друг за другом, но в...

Чтовыгоднее один большой сайт или много маленьких
Вот скажите новичку что выгоднее будет предположим один сайт раскрученный под много запросов и 300...

Как в C# можно рабить массив на несколько массивов с сохранением всех данных?
Добрый вечер. Мне необходимо разбить массив на несколько с сохранением всех данных. К примеру в...

В какой тип данных можно уместить 25-и значное целочисленное число?
Я пишу на С++ Builder 6


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.