У меня очень большой вектор (миллионы записей по 1024 байта каждая). Я превышаю максимальный размер вектора (получаю исключение неправильного распределения памяти). Я выполняю рекурсивную операцию над вектором элементов, которая требует доступа к другим элементам в векторе. Операции нужно делать быстро. Я пытаюсь избежать записи на диск из соображений скорости. Есть ли другой способ сохранить эти данные, не требующий записи на диск? Если мне нужно записать данные на диск, как лучше всего это сделать>
отредактируйте для получения дополнительной информации.
Операции, которые я выполняю с набором данных, рекурсивно генерируют строку на основе других точек данных в векторе. Данные сортируются при считывании. Наборы данных от 50 000 до 50 000 000.
std::deque
; это должно позволить вам хранить гораздо больше элементов, прежде чем закончится память. - person Praetorian   schedule 15.03.2013std::vector
используется стратегия перераспределения с удвоением емкости, что означает, что если вы сильно увеличиваете свой вектор, он, вероятно, использует гораздо больше места для хранения, чем необходимо для хранения фактических адресуемых элементов. - person Charles Salvia   schedule 15.03.20132^22
элементов (и практическую границу намного меньше, потому что не все ваше пространство памяти будет этим одним контейнером). Это всего лишь 4,2 миллиона элементов. Вы запрашиваете непрерывный буфер памяти, содержащий миллионы 1024-байтовых элементов в 32-разрядной ОС — ответ — нет, вы не можете этого сделать. Расслабьте некоторые из них, и вы сможете их решить. Зачем, собственно, вам нужен смежный? - person Yakk - Adam Nevraumont   schedule 15.03.2013std::vector::max_size()
, чтобы определить максимальный размер, который вы можете хранить. - person andre   schedule 15.03.2013