自动指针的容器

Gia*_*uca 2 c++ stl auto-ptr

我知道不应该使用自动指针的容器,这可能会导致问题.这是什么原因?是否还有其他类型的"智能"指针可以安全地在容器中使用?

MSa*_*ers 11

容器元素应该是真正可复制的; auto_ptr不是.如果您制作副本,则会修改原件(它将失去所有权).可以复制boost :: shared_ptr,因为之后两个指针将共享所有权.因此,它可以用在STL容器中.

  • +1注意`boost :: shared_ptr <>`变为`std :: tr1 :: shared_ptr <>`(如果你的编译器/ std lib支持TR1)和`std :: shared_ptr <>`(如果你的编译器/ std lib)支持C++ 11). (3认同)
  • @damarak:_pointer_的副本不是_object_的副本.如果我复制一个指针,我希望它与原始指针相同.因此两者都指向同一个对象.Shared_ptr的复制构造函数就是这样做的. (3认同)