代码之家  ›  专栏  ›  技术社区  ›  BCS

如何将列表<T>对象附加到另一个

  •  78
  • BCS  · 技术社区  · 15 年前

    在C++中,我有两个 list<T> 物体 A B 我想添加 B 到底 . 我已经搜索了一些不同的来源,还没有找到一个简单的解决方案(例如。 A.append(B); )这让我有点惊讶。

    最好的方法是什么?

    碰巧的是,我不关心这之后的B(它在下一行被删除),所以如果有一种方法可以利用它来获得更好的性能,我也对它感兴趣。

    2 回复  |  直到 15 年前
        1
  •  206
  •   dmeister    13 年前

    如果要附加 项目的副本 在B中,您可以执行以下操作:

    a.insert(a.end(), b.begin(), b.end());
    

    如果你想 移动项目

    a.splice(a.end(), b);
    

    在您的情况下,拼接会更好,因为它只需要调整链接列表中的几个指针。

        2
  •  -3
  •   serup    8 年前

    使用boost的一个示例

    std::list<T> A; // object A is a list containing T structure
    std::list<T> B; // object B is a list containing T structure
    
    // append list B to list A
    BOOST_FOREACH(auto &listElement, B) { A.push_back( listElement ); }