【发布时间】:2011-01-02 09:29:41
【问题描述】:
我正在学习智能指针 (std::auto_ptr) 并且刚刚阅读了 here 和 here 不应该将智能指针 (std::auto_ptr) 放入容器中(即 std::vector),因为即使大多数编译器也不会不要抱怨,这似乎是正确的。没有规则说智能指针不会在内部复制(例如通过vector 类)并转移其所有权,然后指针将变为NULL。到头来,一切都会搞砸。
实际上,这种情况多久发生一次?
有时我有指针向量,如果将来我决定想要一个智能指针向量,我的选择是什么?
我知道 C++0x 和 Boost 库,但现在,我更愿意坚持使用 STL 方法。
【问题讨论】:
-
std::tr1 (std::tr1::shared_ptr)中也有智能指针
-
我不会真正将
auto_ptr称为智能指针 :) 这真的很愚蠢,因此(不幸的是)大多数关于智能指针的建议都不能应用于它(因为它的复制语义搞砸了)。
标签: c++ pointers std smart-pointers auto-ptr