首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

智能指针和容器的有关问题

2012-03-03 
智能指针和容器的问题遇到一个问题:标准库中的auto_ptr 不能用于容器中,那如果想在容器中保存smart_pointe

智能指针和容器的问题
遇到一个问题:
标准库中的auto_ptr 不能用于容器中,那如果想在容器中保存smart_pointer类的对象,用哪一种smart pointer呢? 自己写一个??请大家指点

[解决办法]
当你拷贝一个auto_ptr,被auto_ptr所指的对象的所有权已经转移到了新的auto_ptr中去了,原有的auto_ptr被设置为NULL。
实质就是:拷贝一个auto_ptr,将会改变auto_ptr本身的值。

stl的容器中有很多需要拷贝元素的操作,如排序、查找等,这些操作都会改变auto_ptr的值,这绝对不是你所希望的

Effective c++中就建议不要在容器中使用auto_ptr,可以使用smart_ptr
[解决办法]
如果不是必要,容器自己管理对象好了,自己管理很麻烦的,而且要定制很多东西。
当然如果是大对象,为了防止多次拷贝构造之类的,保存指针是个好选择。
[解决办法]
如果不想用boost
那么就用指针,直接写如考虑不周比指针更容易犯错.
[解决办法]

C/C++ code
容器里放的话,不要用智能指针,用一般指针不行?注意最后的内存释放就可以了。 

热点排行