如何组合boost :: shared_ptr和stl列表

时间:2014-08-06 14:48:24

标签: c++ boost stl

我正在使用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())

编译。

问题:这是必须要做的还是我的愚蠢的解决方法?

1 个答案:

答案 0 :(得分:5)

如果两个列表都保存在共享指针中,则执行此操作:

list1->merge(*list2);

使用->代替.取消引用list1指针。它等同于:

(*list1).merge(*list2);

当然,如果它没有保存在智能指针中,您可以删除任一列表前面的*