Оставшаяся память перед перераспределением вектора С++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Оставшаяся память перед перераспределением вектора С++

Сообщение Anonymous »

Предположим, я использую вектор типа int a:

Код: Выделить всё

vector a {1, 2, 34, 1222, 0};
Затем я хочу вернуть некоторые данные следующим образом:

Код: Выделить всё

a.push_back(data);
Однако моей программе приходится добавлять много данных в мой вектор.
Я изучаю C++ по книге. В книге говорится: «Для добавления элемента иногда может потребоваться выделение дополнительного хранилища. В этом случае каждый элемент должен быть перемещен в новое хранилище», C++ Ressources Network добавляет, что «это относительно дорогая задача с точки зрения времени обработки». Я также нашел статью на эту тему.
Однако моя программа должна быть очень быстрой. Значит, я не могу справиться с этим «перераспределением» своего вектора. Фактически размер моего вектора может превышать 1 ГБ памяти.

Мой вопрос довольно прост:
Как я могу узнать оставшуюся память перед перераспределением моего огромного вектора?

Примечание: Я не знаю окончательный размер моего вектора, поэтому не могу его инициализировать, сохранив необходимую память.
Скажите мне если у вас есть вопросы или комментарии.

Подробнее здесь: https://stackoverflow.com/questions/499 ... g-vector-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»