最終更新日時(UTC):
が更新

履歴 編集

function
<flat_set>

std::flat_multiset::insert_range(C++23)

template<container-compatible-range<value_type> R>
void insert_range(R&& rg);                             // (1) C++23
template<container-compatible-range<value_type> R>
constexpr void insert_range(R&& rg);                   // (1) C++26

template<container-compatible-range<value_type> R>
constexpr void insert_range(sorted_equivalent_t, R&& rg); // (2) C++26

概要

Rangeを挿入し、コンテナを拡張する。

これは、挿入された要素の数だけコンテナの size() を増やす。

内部的に flat_multiset コンテナは、コンストラクト時に指定された比較オブジェクトによって要素を下位から上位へとソートして保持する。

効果

  • (1) : メンバ変数として保持しているコンテナcに、以下のように挿入する:

    ranges::for_each(rg, [&](auto&& e) {
      c.insert(c.end(), std::forward<decltype(e)>(e));
    });
    

    • 次に、新しく挿入された要素の範囲をvalue_comp()を基準にソートする
    • 次に、ソートされた結果の範囲と、既存の要素のソートされた範囲をひとつのソートされた範囲にマージする
  • (2) : insert_range(rg)と等価

戻り値

なし

計算量

備考

  • この操作はインプレース・マージを行うため、追加のメモリ確保を行う可能性がある

#include <flat_set>
#include <iostream>

int main()
{
  std::flat_multiset<int> fs = {3};

  std::flat_multiset<int> fs2 = {5, 15};

  fs.insert_range(fs2);

  for (int i : fs) {
    std::cout << i << std::endl;
  }
}

出力

3
5
15

バージョン

処理系

関連項目

名前 説明
flat_multiset::insert 要素を挿入する
flat_multiset::emplace 要素を直接構築する
flat_multiset::emplace_hint ヒントを使って要素を直接構築する

参照