这是一个愚蠢的问题,但我不知道如何实现。

我有一个对象和一个 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/

10-11 18:12