在std::vector中存储具有std::auto_ptr作为其成员变量的类的对象是安全的。但是,需要注意的是,std::auto_ptr已经被C++11标准废弃,建议使用std::unique_ptr或std::shared_ptr来替代。
如果使用std::unique_ptr,可以使用std::vector<std::unique_ptr<T>>来存储对象。std::unique_ptr是一个独占所有权的智能指针,它可以确保同一时刻只有一个std::unique_ptr拥有对象的所有权。当std::vector被销毁时,std::unique_ptr将自动释放其指向的对象。
如果使用std::shared_ptr,可以使用std::vector<std::shared_ptr<T>>来存储对象。std::shared_ptr是一个共享所有权的智能指针,它允许多个std::shared_ptr指向同一个对象,并在最后一个std::shared_ptr被销毁时自动释放该对象。
无论使用哪种智能指针,都需要注意其生命周期和所有权管理。在使用智能指针时,应该遵循RAII(Resource Acquisition Is Initialization)原则,确保资源的正确获取和释放。
领取专属 10元无门槛券
手把手带您无忧上云