2010-02-27 83 views
5

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

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

谢谢, Gokul。

回答

2

您需要复制元素。考虑是这样的:如果你想通过两个列表共享同一节点

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

,这根本就不是由std::list(STL容器总是有独家拥有)的支持。您可以避免通过在列表中存储指针来重复元素,也可以使用boost::ptr_list,它在内部存储指针,但提供更好的API。

+0

请注意,这可能比其他解决方案更慢(http://stackoverflow.com/questions/2349098/2349119#2349119)。请参阅http://stackoverflow.com/questions/2551775/2551808#2551808上的评论,为什么会这样。 – sbi 2010-04-01 17:06:23

7

尝试插入:

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

到前 '位置' 插入A在B中的元素的副本。 A本身保持不变。看到这个link

+0

+1比我的答案更好。 – Tronic 2010-02-27 22:33:28

+0

@Tronic:谢谢。 – Arun 2010-03-01 18:57:43