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

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

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

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

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

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

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

Массив массивов или как ? - C++
Не знаю как сделать вот такую веСЧ: Есть 2 списока, например: Список1|Список2 R1..............R2 R8..............R3 ...

Как создать массив или вектор размера больше чем 0x7fffffff? - C++
Вопрос вот в чем.. максимальная разрядность сетки блоков нитей 2^31-1 на GPU (используя CUDA на видеокартах с Compute capability 3.0 и...

Как можно в С++ получить список файлов и папок какого-то диска или папки? - C++
Как можно в С++ получить список файлов и папок какого-то диска или папки?

Как можно считать из файла большой текст? - C++
Как можно считать из файла большой текст? Просто если я использую обычный массив a, то программа зависает.

Разные способы подключения файла, или как еще можно передать функции двумерный массив? - C++
Программа считает сумму положительных элементов каждого столбца и сумму отрицательных элементов каждой строки. Все работает как нужно, но...

Как создать массив строк или символов, чтобы потом можно было с цикла его заполнить? - C++
Есть наработки, но не работает: while(c!=27){ FILE* file1; file1=fopen("zarplaty.txt","r"); for(i=0;i<lines_count;i++){ ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
17.07.2012, 12:31     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #2
Можно попробовать бинарный файл.
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
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
17.07.2012, 12:56     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #5
zek921, расскажи подробнее, что именно ты пытаешься сделать и что не получается. А то непонятно пока, что означает "больше данных" и почему текущее решение (наверняка ты как-то организовал данные, так ведь?) не устраивает?
zek921
9 / 9 / 2
Регистрация: 30.04.2011
Сообщений: 130
Записей в блоге: 1
17.07.2012, 12:58  [ТС]     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #6
для общего развития хочу написать длинную арифметику .С ООООООЧЕНЬ большими числами .
Пока не начинал и только думаю как лучше сделать .
Catstail
Модератор
22515 / 10920 / 1774
Регистрация: 12.02.2012
Сообщений: 18,067
17.07.2012, 13:37     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ? #7
Для длинной арифметики рекомендую использовать динамически создаваемые массивы.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
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
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
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     Как можно в памяти уместить больше данных ?Большой массив или список маленьких массивов ?
Еще ссылки по теме:

Выяснить, можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со сторонами c, d - C++
Даны действительные положительные числа: a, b, c, d. Выяснить, можно ли прямоугольник со сторонами a, b уместить внутри прямоугольника со...

Построить в динамической памяти линейный связанный список строкового типа данных - C++
Задание: Построить в динамической памяти линейный связанный список строкового типа данных. Количество элементов списка заранее неизвестно....

массив массивов или что-то в этом роде - C++
у меня есть число а -составное которое делится на b1,b2,...,bn; и в зависимости от bi надо создать столько динамических двумерных...

Как осуществить сравнение больше, чем двух массивов? - C++
Помогите написать функцию для сравнения 10 массивов в которых по 5 элементов. Это так называемая таблица 1 2 3 4 5 ---------массив 1 ...

Большой двумерный массив как член класса - C++
Размеры массива 2048 на 512. Создал, заполняю в конструкторе, но результата нету. Такое вообще реально, без динамического выделения памяти?


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

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

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