我正在使用stl list
作为boost::shared_ptr
。 E.g:
#typedef boost::shared_ptr< std::list<SomeStruct> > list_ptr;
list_ptr list;
list_ptr otherlist;
现在我想将列表合并到另一个列表中。默认的stl行为是list.merge(otherlist)
。但只要我使用shared_ptr
现在我想通了,
list.merge(*(otherlist.get())
编译。
问题:这是必须要做的还是我的愚蠢的解决方法?
答案 0 :(得分:5)
如果两个列表都保存在共享指针中,则执行此操作:
list1->merge(*list2);
使用->
代替.
取消引用list1指针。它等同于:
(*list1).merge(*list2);
当然,如果它没有保存在智能指针中,您可以删除任一列表前面的*
。