我有一些C代码,其中有两个链接列表(比如A和B),A在特定位置插入到B中,A仍然有元素。
如何使用C ++ STL有效地模拟相同的行为?如果我尝试拼接,它会使第二个变空。
谢谢, 戈库尔。
答案 0 :(得分:7)
答案 1 :(得分:2)
您需要复制元素。考虑这样的事情:
std::copy(a.begin(), a.end(), std::inserter(b, b_iterator));
如果您希望两个列表共享相同的节点,std::list
就不支持这种情况(STL容器始终拥有独占所有权)。您可以通过在列表中存储指针或使用boost::ptr_list
来避免重复元素,{{1}}在内部存储指针但提供更好的API。