这是一个愚蠢的问题,但我不知道如何实现。
我有一个对象和一个 vector 。在执行过程中的设定时间,我需要将此对象放入 vector 中,并用新对象覆盖该对象。我目前有这个
std::vector<Cube*> cubes;
Cube* workingCube = new Cube();
...
cubes.insert(cubes.begin(), workingCube);
workingCube = new Cube();
由于某些与指针相关的原因,我认为这是错误的。我不知道如何正确地做到这一点。
最佳答案
如果我们避免使用指针和显式的动态分配,它将更加干净,并且泄漏的可能性也大大降低:
std::vector<Cube> cubes;
Cube workingCube;
cubes.insert(cubes.begin(), workingCube);
workingCube = Cube();
如果
Cube
复制起来很昂贵但移动起来很便宜,则可以改为将std::move(workingCube)
放入容器中。如果Cube
的移动和复制都很昂贵,请使用std::unique_ptr<Cube>
并将其移动到容器中。无论您做什么,都不会使用原始指针来拥有。
关于c++ - 如何在C++中移动指针?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9625912/