这是一个愚蠢的问题,但我不知道如何实现这一目标.
我有一个对象和一个向量.在执行期间的设定时间,我需要将此对象放在向量中并使用新对象覆盖此对象.我现在有这个,
std::vector<Cube*> cubes;
Cube* workingCube = new Cube();
...
cubes.insert(cubes.begin(), workingCube);
workingCube = new Cube();
Run Code Online (Sandbox Code Playgroud)
由于一些与指针相关的原因,我认为这是错误的.我无法弄清楚如何正确地做到这一点.
Jam*_*lis 10
如果我们避免使用指针和显式动态分配,它会更加清晰并且更不容易泄漏:
std::vector<Cube> cubes;
Cube workingCube;
cubes.insert(cubes.begin(), workingCube);
workingCube = Cube();
Run Code Online (Sandbox Code Playgroud)
如果Cube复制昂贵但移动便宜,你可以std::move(workingCube)进入容器.如果Cube移动和复制都很昂贵,请使用a std::unique_ptr<Cube>并将其移动到容器中.
无论你做什么,都不要使用原始指针来拥有东西.
| 归档时间: |
|
| 查看次数: |
834 次 |
| 最近记录: |