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)
。