c ++では、2つのlist<T>
オブジェクトA
とB
があり、B
のすべてのメンバーをA
の最後に追加したい。私はいくつかの異なるソースを検索しましたが、簡単な解決策は見つかりませんでした(e.i. A.append(B);
)。これは少し驚きです。
これを行う最良の方法は何ですか?
たまたま、私はこの後Bを気にしません(次の行で削除されます)。それを活用してパフォーマンスを向上させる方法があれば、それにも興味があります。
Bにアイテムのコピーを追加する場合は、次の操作を実行できます。
a.insert(a.end(), b.begin(), b.end());
アイテムの移動 BのAの終わり(同時にBを空にする)にしたい場合は、以下を実行できます。
a.splice(a.end(), b);
あなたの状況では、リンクされたリストのいくつかのポインタを調整するだけなので、スプライシングがより良いでしょう。
ブーストを使用する1つの例
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 ); }