2013-07-29 3 views
1

В C++, map класс очень удобен. Вместо того, чтобы искать отдельную базу данных, я хочу сохранить все строки как объекты, и я хочу создать объект map для поиска столбцов. Меня интересуют максимальные объекты, обрабатываемые процессом. И использует функцию карты для извлечения объекта среди, скажем, 10 миллионов объектов, если разрешает linux, является хорошим выбором? Я не беспокоюсь о сохранении данных.Максимальный лимит для объектов в процессе?

ответ

3

Нет, нет максимального количества объектов на процесс. Объекты (как, например, объекты C++) - это абстракция, о которой OS не знает. Единственным значимым ограничением в этом отношении является объем используемой памяти.

Вы можете полностью заполнить свою ОЗУ, используя как можно больше map, я обещаю.

+0

спасибо вам за обещание. – neckTwi

3

Как вы можете видеть в справочной документации, constannt map::max_size сообщит вам номера.

Это должно быть 2^31-1 на ix86 оборудования/OS и 2^64-1 на amd64 аппаратное обеспечение/64-битной ОС

Возможная additionnal информация here.

4

Что вы ищете std::map::max_size, цитируя из ссылки:

... отражает теоретический предел размера контейнера. Во время выполнения размер контейнера может быть ограничен значением, меньшим, чем max_size(), на количество доступных оперативной памяти.

1

Объект - понятие в языке программирования. Фактически, процессы не знают об объектах. С достаточным объемом оперативной памяти вы можете выделить как можно больше объектов в своей программе. Что касается второго вопроса, я отвечаю, что структура данных, которую вы выбираете в своей программе, зависит от проблемы, которую вы хотите решить в своей программе. Карта является подходящей структурой данных для быстрого доступа к объектам, тестирования и т. Д., Но недостаточно для поддержания порядка объектов.