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

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

Войти
Регистрация
Восстановить пароль
 
Ilyaa
20 / 20 / 3
Регистрация: 29.04.2012
Сообщений: 214
#1

Размерность std::map - C++

20.11.2013, 23:49. Просмотров 650. Ответов 12
Метки нет (Все метки)

Добрый вечер.

Использую тип данных 16 байтовый. Надо записать несколько десятков миллионов расчетов в
C++
1
map <type, type> val;
C помощью методов ._Max и .max_size() узнаю, что максимальный размер - более 100 миллионов. Проблема : на 24ом миллионе программа завершает свою работу, не занеся все данные и не сделав потом еще ряд вычислений. Завершается успешно, но без последующих вычилений, то есть дело в индексации массива. Может я не точно узнал максимальную размерность массива? Как ее узнать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 23:49     Размерность std::map
Посмотрите здесь:

Std::map::emplace - C++
То ли я туплю/криво поставил компилятор, то ли это emplace синтаксис кривой, но... Как использовать emplace применительно к map со...

std::map не компилируется - C++
Всем здравствуйте. Возникла проблема при попытке использования std::map в visual studio 2010. при подключении файла &lt;map&gt; и объявлении...

Std::map и key_comp - C++
Есть задача, нужно задать в map класс для сравнения ключей, но классу для сравнения нужен ещё один вспомогательный елемент. Ну вот...

Доступ к элементам в std::map - C++
У меня возник вопрос. В этом участке кода, есть два цикла, которые выводят содержимое контейнера std::map и вывод идентичен. Рационально...

Чем плох std::map? - C++
std::map ?

Теоретический вопрос по std::map - C++
Всем привет. Подскажите пожалуйста как std::map резервирует память и как в памяти выглядят его элементы(условно). Те. понятно что вектор -...

std::map в инлайн-асме - C++
Доброго времени суток Имеется MAP-массив содержащий хуки для функций Нужно получить соответствующий адрес в naked функции: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
455 / 304 / 23
Регистрация: 22.03.2011
Сообщений: 990
Завершенные тесты: 2
21.11.2013, 00:12     Размерность std::map #2
http://www.cplusplus.com/reference/map/map/max_size/
This is the maximum potential size the container can reach due to known system or library implementation limitations, but the container is by no means guaranteed to be able to reach that size:it can still fail to allocate storage at any point before that size is reached.

Но, а вообще без кода сложно сказать, что произодит.
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
21.11.2013, 00:14     Размерность std::map #3
Цитата Сообщение от Ilyaa Посмотреть сообщение
Использую тип данных 16 байтовый.
Цитата Сообщение от Ilyaa Посмотреть сообщение
на 24ом миллионе программа завершает свою работу
sizeof ( type ) * 2 * 24000000 / 1048576 = 732.421875 мегабайта только на Ваши данные в узлах, не считая "служебных" данных std :: map и памяти, занимаемой всей остальной программой
gray_fox
What a waste!
1443 / 1172 / 61
Регистрация: 21.04.2012
Сообщений: 2,449
Завершенные тесты: 3
21.11.2013, 00:33     Размерность std::map #4
Цитата Сообщение от Ilyaa Посмотреть сообщение
Может я не точно узнал максимальную размерность массива? Как ее узнать?
Точно никак, может просто памяти не хватить.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
21.11.2013, 00:55     Размерность std::map #5
Дюже интересно, шо ты там, звёзды считаешь шо ль?
Ilyaa
20 / 20 / 3
Регистрация: 29.04.2012
Сообщений: 214
21.11.2013, 15:30  [ТС]     Размерность std::map #6
Цитата Сообщение от stima Посмотреть сообщение
Но, а вообще без кода сложно сказать, что произодит.
В коде нет смысла. Представьте цикл for и 100 миллионов итераций)

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Дюже интересно, шо ты там, звёзды считаешь шо ль?
Метод шэнкса для более двадцатизначного модуля.

Добавлено через 3 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
sizeof ( type ) * 2 * 24000000 / 1048576 = 732.421875 мегабайта только на Ваши данные в узлах, не считая "служебных" данных std :: map и памяти, занимаемой всей остальной программой
Откуда делитель 1048576?

Памяти оперативной может не хватать?
А как мне узнать максимально допустимый размер выделения памяти под такую задачу? Я имею в виду, что оперативы у меня 8гигов, а раз пороговое значтельно меньше, то есть некое ограничение для моей задачи. Как узнать это ограничение?
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,363
21.11.2013, 15:38     Размерность std::map #7
Зависит от. Подозреваю, что ты компилируешь в 32-битном режиме. Тогда, естессно, все, что ты имеешь - это чуть менее 2 Гбайт для всего-всего: кода программы, статических данных, всех подгруженных DLL, и динамических данных - вот этой самой твоей map. Так что 700 Мбайт только на твои данные, плюс служебные данные map - вуаля, может случиться и так, что памяти тупо не хватило.

Попробуй перекомпилировать в 64-битном режиме и посмотри, что получится.
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,056
Завершенные тесты: 1
21.11.2013, 17:32     Размерность std::map #8
Цитата Сообщение от Ilyaa Посмотреть сообщение
Откуда делитель 1048576?
байты в мегабайты чтобы перевести
Ilyaa
20 / 20 / 3
Регистрация: 29.04.2012
Сообщений: 214
21.11.2013, 19:37  [ТС]     Размерность std::map #9
Цитата Сообщение от CheshireCat Посмотреть сообщение
все, что ты имеешь - это чуть менее 2 Гбайт для всего-всего: кода программы, статических данных, всех подгруженных DLL, и динамических данных - вот этой самой твоей map. Так что 700 Мбайт только на твои данные, плюс служебные данные map
Сколько весят служебные данные map?
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.11.2013, 21:25     Размерность std::map #10
Цитата Сообщение от Ilyaa Посмотреть сообщение
Сколько весят служебные данные map?
3 указателя на один элемент.
Т.е. 12 байт в 32-битном режиме и 24 байта в 64-битном.
Ilyaa
20 / 20 / 3
Регистрация: 29.04.2012
Сообщений: 214
22.11.2013, 16:35  [ТС]     Размерность std::map #11
Цитата Сообщение от diagon Посмотреть сообщение
12 байт в 32-битном режиме и 24 байта в 64-битном.
Тогда как мои 732 Мбайта забивают допустимый лимит в 2 ГБ?
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
22.11.2013, 16:48     Размерность std::map #12
Цитата Сообщение от Ilyaa Посмотреть сообщение
Тогда как мои 732 Мбайта забивают допустимый лимит в 2 ГБ?
12 байт на один элемент, а не на весь контейнер.
Т.е. размер вашего элемента равен 16 + 12 = 28 байт, плюс возможно выравнивание до 32 байт.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2013, 23:00     Размерность std::map
Еще ссылки по теме:

Сортировка std::map по значению - C++
имеется вот такой вот тип: typedef struct { char domain; set&lt;uint32_t&gt; unique_ip; set&lt;uint32_t&gt; unique_id; } REF_LOG; ...

Память, используемая std::map - C++
Когда вызывается new, выделение памяти происходит в куче Когда создается экземпляр класса без new или переменная в функции - это память...

std::map нефикс. размер? - C++
Нубо-вопрос, std::map и std::array имеют фиксированный размер, как и обычные массивы?

Stdext::hash_map и std::map - C++
Здравствуйте форумчане! Может ли кто нибудь объяснить мне отличие stdext::hash_map от std::map? В интернете не так много информации о нем,...

Зачем нужен std::map - C++
Почитал информацию об этом классе, но так и не понял, зачем он нужен?


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
22.11.2013, 23:00     Размерность std::map #13
Цитата Сообщение от diagon Посмотреть сообщение
Т.е. размер вашего элемента равен 16 + 12 = 28 байт, плюс возможно выравнивание до 32 байт.
плюс другие данные программы
Yandex
Объявления
22.11.2013, 23:00     Размерность std::map
Ответ Создать тему
Опции темы

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