Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
#1

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

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

сабж выше
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2012, 12:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? (C++):

Как можно в case вставить знак больше или равно? - C++
Как можно в case вставить знак больше или равно? Например switch(n){ case : //Вот в этой строке нужно знать больше ли n...

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

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

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

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

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

11
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
17.07.2012, 12:31 #2
Можно попробовать бинарный файл.
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
17.07.2012, 12:39 #3
Всякий список хранит данные и указатели на них, под указатели расходуется память, и как минимум один указатель должен быть при каждом элементе + ещё 1 на весь список. У тебя элементами будут массивы. Значит месте для данных останется меньше и тем меньше, чем меньше сами массивы.
0
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
17.07.2012, 12:52  [ТС] #4
Не совсем понял про бинарный файл ,не сталкивался с таким его использованием ,можно подробней ?
***
Если я правильно понимаю ,размер динамического массива ,например , short int ,буде 4 байта для указателя + 2 байта за каждый участок памяти с числом ,верно ?Нужно делать массивы с целевыми данными такой длины ,чтобы на х байт памяти под целевые данные приходилось приемлемое число байт вспомогательной информации .Но мне ,похоже , способ со списком не подходит.

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

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

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

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

Не по теме:

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



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

Добавлено через 3 минуты
next stage
разделить число на меньшие и отдать их на растерзание сети компьютеров .Но это уже совсем изврат .
0
CheshireCat
Эксперт С++
2896 / 1245 / 78
Регистрация: 27.05.2008
Сообщений: 3,405
17.07.2012, 14:42 #12
О "длине числа": да, потеряешь. Накладные расходы на организацию списка массивов составят аж катастрофическую величину - где-то на уровне 0.00001% от длины числа.
0
17.07.2012, 14:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2012, 14:42
Привет! Вот еще темы с ответами:

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

1. Дана последовательность символов, заканчивающихся ‘.’. Определить каких латинских букв больше: заглавных или маленьких. - Assembler
1. Дана последовательность символов, заканчивающихся ‘.’. Определить каких латинских букв больше: заглавных или маленьких.

Как отрисовать большой массив данных - C++ Qt
Вобщем столкнулся с проблемой: нужно отрисовать большой массив (2000*8000 точек) из файла. Он конечно отрисовывается, но тратится на это 55...

MySQL Запросы к БД в цикле или большой объем в памяти - PHP БД
Вопрос от новичка: сейчас делаю обновление товаров в интернет магазине. В магазине около 30 тыс товаров. Не знаю как быть: в цикле...


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

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

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