Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
17.07.2012, 12:25     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #1
сабж выше
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2012, 12:25     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ?
Посмотрите здесь:

Массив массивов или как ? C++
Как можно в case вставить знак больше или равно? C++
C++ Как можно считать из файла большой текст?
C++ Построить в динамической памяти линейный связанный список строкового типа данных
C++ Выяснить, можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со сторонами c, d
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
17.07.2012, 12:31     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #2
Можно попробовать бинарный файл.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.07.2012, 12:39     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #3
Всякий список хранит данные и указатели на них, под указатели расходуется память, и как минимум один указатель должен быть при каждом элементе + ещё 1 на весь список. У тебя элементами будут массивы. Значит месте для данных останется меньше и тем меньше, чем меньше сами массивы.
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
17.07.2012, 12:52  [ТС]     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #4
Не совсем понял про бинарный файл ,не сталкивался с таким его использованием ,можно подробней ?
***
Если я правильно понимаю ,размер динамического массива ,например , short int ,буде 4 байта для указателя + 2 байта за каждый участок памяти с числом ,верно ?Нужно делать массивы с целевыми данными такой длины ,чтобы на х байт памяти под целевые данные приходилось приемлемое число байт вспомогательной информации .Но мне ,похоже , способ со списком не подходит.

***
Еще про бинарник ,т е я смогу работать с файлом произвольного размера ,ограниченного лишь ресурсами машины ?
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
17.07.2012, 12:56     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #5
zek921, расскажи подробнее, что именно ты пытаешься сделать и что не получается. А то непонятно пока, что означает "больше данных" и почему текущее решение (наверняка ты как-то организовал данные, так ведь?) не устраивает?
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
17.07.2012, 12:58  [ТС]     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #6
для общего развития хочу написать длинную арифметику .С ООООООЧЕНЬ большими числами .
Пока не начинал и только думаю как лучше сделать .
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
17.07.2012, 13:37     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #7
Для длинной арифметики рекомендую использовать динамически создаваемые массивы.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
17.07.2012, 13:45     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #8
Цитата Сообщение от zek921 Посмотреть сообщение
для общего развития хочу написать длинную арифметику .С ООООООЧЕНЬ большими числами .
А, ну вот теперь понятно. Согласен с Catstail - нужно использовать динамические массивы, применительно к C++ это vector. Ну, а дальше - обычная поразрядная обработка, как в школе - "в столбик". Сложение/вычитание и сдвиги реализуются влет, умножение/деление немного посложнее.
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
17.07.2012, 14:31  [ТС]     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #9
массив попробовал .При unsigned long размер массива не будет больше миллиарда .Система счисления миллиард ,макс число большое будет ,но хочу еще больше

Добавлено через 19 минут
и возвращаясь к исходному вопросу ,потеряю ли я в длине числа используя список массивов ?
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
17.07.2012, 14:32     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #10
Ну, дык, в чем проблема?

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

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

Не по теме:

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



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

Добавлено через 3 минуты
next stage
разделить число на меньшие и отдать их на растерзание сети компьютеров .Но это уже совсем изврат .
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2012, 14:42     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ?
Еще ссылки по теме:

Как создать массив или вектор размера больше чем 0x7fffffff? C++
C++ Разные способы подключения файла, или как еще можно передать функции двумерный массив?
Большой двумерный массив как член класса C++

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

Или воспользуйтесь поиском по форуму:
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
17.07.2012, 14:42     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #12
О "длине числа": да, потеряешь. Накладные расходы на организацию списка массивов составят аж катастрофическую величину - где-то на уровне 0.00001% от длины числа.
Yandex
Объявления
17.07.2012, 14:42     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ?
Ответ Создать тему
Опции темы

Текущее время: 16:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru