C ++链接列表行为

时间:2010-02-27 21:54:06

标签: c++ stl linked-list stdlist

我有一些C代码,其中有两个链接列表(比如A和B),A在特定位置插入到B中,A仍然有元素。

如何使用C ++ STL有效地模拟相同的行为?如果我尝试拼接,它会使第二个变空。

谢谢, 戈库尔。

2 个答案:

答案 0 :(得分:7)

尝试插入:

B.insert( position, A.begin(), A.end() );

在'position'之前插入B中A元素的副本。本身保持不变。见link

答案 1 :(得分:2)

您需要复制元素。考虑这样的事情:

std::copy(a.begin(), a.end(), std::inserter(b, b_iterator));

如果您希望两个列表共享相同的节点,std::list就不支持这种情况(STL容器始终拥有独占所有权)。您可以通过在列表中存储指针或使用boost::ptr_list来避免重复元素,{{1}}在内部存储指针但提供更好的API。