Каков максимальный размер вектора <> :: maxsize ()? - PullRequest
1 голос
/ 29 марта 2011

Укажите диапазон векторного списка ....

Я хочу сохранить миллион записей в векторе <>.

Мне нужно скопировать миллионы записей из одного вектора <>в другой вектор <>, а затем отсортируйте вектор и примените мою функцию фильтра (уникальный идентификатор) для извлечения записи.

возможно ли это в векторе

С уважением, Картик

Ответы [ 3 ]

8 голосов
/ 29 марта 2011

Каков максимальный размер вектора ....

Я думаю, что вы ответили на свой вопрос.Теоретический предел для вашей системы вы можете получить с помощью функции vector<T>::max_size().Например:

vector<int> vec;
std::cout<<vec.max_size()<<std::endl;//prints max size for vector<int> in your system!

Так что просто запустите это и проверьте ответ для вашей системы.

Однако на практике выделенный массив вектора должен быть в одном последовательном блоке памяти и даже с меньшим размеромвыделение памяти может быть неудачным.Если вы собираетесь использовать вектор целых с миллионами элементов, я думаю, у вас не должно быть проблем.Однако для больших объектов это может быть проблематично.

0 голосов
/ 26 марта 2012

Я проверяю это на своем компьютере.Windows 7 32bit.Результат - 2^32/sizeof(CPoint3D)-1=268435455, sizeof(CPoint3D) - 16. Но max_size - ничто.После этого m_point1.reserve(25641355) отображается «Недостаточно памяти».

25641355 < 268435455

0 голосов
/ 29 марта 2011

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

В этом случае лучше использовать deque вместо vector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...