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

tue*_*ist 0 c++ boost stl

我正在使用stl list作为boost::shared_ptr.例如:

#typedef boost::shared_ptr< std::list<SomeStruct> > list_ptr;
list_ptr list;
list_ptr otherlist;
Run Code Online (Sandbox Code Playgroud)

现在我想将列表合并到另一个列表中.默认的stl行为是list.merge(otherlist).但只要我使用,编译器就会抱怨它(没有数学函数)shared_ptr

现在我想通了

list.merge(*(otherlist.get())
Run Code Online (Sandbox Code Playgroud)

编译.

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

Joh*_*nck 5

如果两个列表都保存在共享指针中,那么您可以这样做:

list1->merge(*list2);
Run Code Online (Sandbox Code Playgroud)

->是用来代替.取消引用list1的指针.它相当于:

(*list1).merge(*list2);
Run Code Online (Sandbox Code Playgroud)

当然*,如果它没有保存在智能指针中,你会删除任一列表前面的内容.