C ++ 11 — Как повторно использовать блок памяти, ранее выделенный для вектора в переполнении стека

У меня есть несколько векторов структурных объектов для разных структур. Теперь я хочу повторно использовать одну и ту же память для всех векторных объектов. Т.е., как только моя работа закончится с одним вектором, я хочу стереть его элементы из памяти и назначить эту память другому вектору.
первый вектор относится к одному объекту структурного типа, а второй вектор является объектом структурного типа совершенно другой структуры.
Я использую Windows 8.1 64-битную.

-1

Решение

Когда вы стираете векторные элементы, память, выделенная для векторных элементов, не освобождается, пока вы не вызовете std::vector::shrink_to_fit, Таким образом, вам не нужно делать специальных действий для повторного использования выделенной памяти.

Это не чисто то, что вы имеете в виду под

Как только моя работа закончена с одним вектором, я хочу стереть его элементы из
память и назначить эту память другому вектору.

Вы можете продолжить использовать тот же вектор с той же памятью, или вы можете позвонить v1.swap(v2) для обмена выделенной памяти двух векторов, или вы можете переместить выделенную память одного вектора в другой v2 = std::move(v1),

Это применимо к векторам, содержащим элементы одного типа или указатели, которые не подходят для вашего случая.

1

Другие решения

Возможность перемещать выделенную память из вектора одного типа в вектор, содержащий другой, не поддерживается std::vector, Я бы предложил написать / найти другой контейнер, который соответствует вашим потребностям.

0