У меня есть несколько векторов структурных объектов для разных структур. Теперь я хочу повторно использовать одну и ту же память для всех векторных объектов. Т.е., как только моя работа закончится с одним вектором, я хочу стереть его элементы из памяти и назначить эту память другому вектору.
первый вектор относится к одному объекту структурного типа, а второй вектор является объектом структурного типа совершенно другой структуры.
Я использую Windows 8.1 64-битную.
Когда вы стираете векторные элементы, память, выделенная для векторных элементов, не освобождается, пока вы не вызовете std::vector::shrink_to_fit
, Таким образом, вам не нужно делать специальных действий для повторного использования выделенной памяти.
Это не чисто то, что вы имеете в виду под
Как только моя работа закончена с одним вектором, я хочу стереть его элементы из
память и назначить эту память другому вектору.
Вы можете продолжить использовать тот же вектор с той же памятью, или вы можете позвонить v1.swap(v2)
для обмена выделенной памяти двух векторов, или вы можете переместить выделенную память одного вектора в другой v2 = std::move(v1)
,
Это применимо к векторам, содержащим элементы одного типа или указатели, которые не подходят для вашего случая.
Возможность перемещать выделенную память из вектора одного типа в вектор, содержащий другой, не поддерживается std::vector
, Я бы предложил написать / найти другой контейнер, который соответствует вашим потребностям.