-1

对于不同的结构,我有多个结构对象向量。现在我想为所有向量对象重用相同的内存。即,一旦我的工作完成了一个向量,我想从内存中删除它的元素并将该内存分配给另一个向量。即第一个向量是一个结构类型对象,第二个向量是一个完全不同结构的结构类型对象。我正在使用 Windows 8.1 64 位。

4

2 回答 2

1

当您擦除向量元素时,分配给向量元素的内存不会被释放,直到您调用std::vector::shrink_to_fit. 因此,您不必执行特殊操作来重用分配的内存。

它不干净你的意思是什么

完成一个向量的工作后,我想从内存中擦除其元素并将该内存分配给另一个向量。

您可以继续使用具有相同内存的相同向量,或者您可以调用v1.swap(v2)交换两个向量的分配内存,或者您可以将一个向量的分配内存移动到另一个向量v2 = std::move(v1)

它适用于包含相同类型元素或指针的向量,不适合您的情况。

于 2018-02-14T03:55:58.880 回答
0

能够将分配的内存从一种类型的向量移动到包含另一种类型的向量不是std::vector. 我建议编写/找到另一个适合您需求的容器。

于 2018-02-14T04:03:34.810 回答