这是一个愚蠢的问题,但我根本不知道如何做到这一点。
我有一个对象和一个向量。在执行期间的设定时间,我需要将此对象放在向量中并使用新对象覆盖此对象。我现在有这个,
std::vector<Cube*> cubes;
Cube* workingCube = new Cube();
...
cubes.insert(cubes.begin(), workingCube);
workingCube = new Cube();
我认为这是因为一些与指针相关的原因。我不知道如何正确地做到这一点。
答案 0 :(得分:10)
如果我们避免使用指针和明确的动态分配,它会更加清晰并且更不容易泄漏:
std::vector<Cube> cubes;
Cube workingCube;
cubes.insert(cubes.begin(), workingCube);
workingCube = Cube();
如果复制费用Cube
但移动费用便宜,则可以std::move(workingCube)
进入容器。如果Cube
移动和复制都很昂贵,请使用std::unique_ptr<Cube>
并将其移至容器中。
无论你做什么,都不要使用原始指针来拥有东西。
答案 1 :(得分:1)
这没有任何问题,只要你总是记住哪个指针“拥有”对象,即谁不再需要对delete
对象负责。在你的情况下,你将拥有指针传递给向量,在某些时候,你应该删除向量中的所有指针。