一定の (または少なくとも最小限の線形) 時間で 2 つのコンテナーを追加する方法を探しています。
リンクされたlist
s マージに気付きましたが、要素を並べ替えているようです。コンテナを別のコンテナに再リンクするためのコンテナ/メソッドはありませんか(たとえば、のようにlist1.last_element.next = list2.first_element
)?
std::list::spliceメソッドを使用できます。
std::list<int> list1;
std::list<int> list2;
list1.splice(list1.end(), list2, list2.begin(), list2.end());
list2
このコードは、 の内容を の末尾に追加しlist1
ます。
Dietmar Kuhl が述べたように、メソッドは挿入する範囲内の要素をカウントする必要があります。
[list2.begin(), list2.end())
したがって、範囲を指定すると、複雑さは線形になります。ただし、リスト全体を追加したいことがわかっている場合は、簡単に行うことができます
list1.splice(list1.end(), list2);
間に合いO(1)
ます。