最終更新日時:
が更新

履歴 編集

function
<list>

std::list::merge

void merge(list& x);  // (1)
void merge(list&& x); // (2) C++11
template <class Compare> void merge(list& x, Compare comp);  // (3)
template <class Compare> void merge(list&& x, Compare comp); // (4) C++11

概要

2つのlistオブジェクトを併合する。

要件

comp狭義の弱順序として定義されていること。*thisxがその順序でソートされていること。

効果

x*thisにマージする。2つのlistオブジェクトの要素を*thisに併合し、xはマージ後に空となる。
マージ後、xの要素に対するイテレータおよび参照は無効にならない。

戻り値

なし

例外

比較操作が例外を投げない場合、この関数は例外を投げない。

計算量

高々distance(begin(), end()) + distance(x.begin(), x.end()) - 1回の比較

備考

  • この操作は安定である。
  • 移動先と移動元のアロケータが等値でない場合(get_allocator() != x.get_allocator()の場合)、この関数呼び出しの効果は未定義である。

#include <iostream>
#include <list>

int main()
{
  std::list<int> a = {1, 3, 4};
  std::list<int> b = {2, 5, 6};

  a.merge(std::move(b));

  for (int x : a) {
    std::cout << x << std::endl;
  }
}

出力

1
2
3
4
5
6