能否在 std::vector 中存储指向 auto_ptr(s) 的指针?安全吗?
我枚举了一个读取 XML 文件的文件夹,并使用 auto_ptr 为每个文件创建了一个对象。我事先不知道会有多少 XML 文件,我想使用一个 vector 来保存指向它们的指针列表。
我还假设当指针从 Vector 中删除(或 vector 被销毁)时,指针几乎消失了,所以我不必担心将它们设置为 NULL。
最佳答案
您不能将 auto_ptr
本身存储在 std::vector
中,但存储普通指针没问题,即使它指向的东西 是一个 auto_ptr
。
不过,我不明白您为什么要这样做。 auto_ptr
的全部要点是确保堆分配的对象在超出范围时被自动删除。如果必须手动删除 auto_ptr
本身,您将失去该优势。
如果你想在一个 vector 中安全地存储堆分配的对象,你可以使用std::tr1::shared_ptr
而不是auto_ptr
,或者使用Boost的指针容器.或者,如果您使用的是 C++11,std::unique_ptr
与 std::auto_ptr
类似,只是它在容器中使用是安全的。
关于c++ - 在 vector 中存储指向 auto_ptr 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9042263/