我有一些第三方库生成并返回auto_ptr。但是,我真的想使用一些STL容器。
所以我猜一种方法是转换
auto_ptr <int> ptr = some_library_call ();
进入常规c ++指针。以下工作会吗?
int* myptr = ptr;
如果没有,使用STL和auto_ptr的最好方法是什么(是的,我知道它不能直接工作......我知道stl和auto_ptr不能混在一起)?
答案 0 :(得分:8)
如果你想获得指针,你可以使用ptr.get()
,然后让auto_ptr
删除它,或者使用ptr.release()
获取指针并使{{1}忘了它(之后你必须删除它。)
答案 1 :(得分:3)
调用release() on the auto_ptr,然后您可以将值存储在不同的智能指针或原始指针中,并将其与STL容器一起使用。