C ++では、2つのlist<T>オブジェクトがAありB、のすべてのメンバーBをの末尾に追加したいと思いAます。いくつかのソースを検索しましたが、簡単な解決策(ei A.append(B);)が見つかりませんでした。
これを行う最良の方法は何ですか?
たまたま、私はこの後Bは気にしません(次の行で削除されます)ので、より良いパフォーマンスのためにそれを活用する方法があれば、私もそれに興味があります。
回答:
B のアイテムのコピーを追加する場合は、次のようにできます。
a.insert(a.end(), b.begin(), b.end());
BのアイテムをAの末尾に移動する(同時にBを空にする)場合は、次のようにします。
a.splice(a.end(), b);
あなたの状況では、リンクされたリストのいくつかのポインタを調整するだけなので、スプライシングの方が優れています。
a.splice(a.end(), b)and はO(1)ですa.splice(a.end(), b, it_b_start)が、はO(n)ですa.splice(a.end(), b, it_b_start, it_b_end)。